am ded9ec91: Merge change 4383 into donut

Merge commit 'ded9ec91f6623d2566e1b2439ab302b6451e1657'

* commit 'ded9ec91f6623d2566e1b2439ab302b6451e1657':
  Fixes #1912902. Handles orientation change when renaming gestures.
diff --git a/src/com/android/launcher/GesturesActivity.java b/src/com/android/launcher/GesturesActivity.java
index c936576..3ea49e2 100644
--- a/src/com/android/launcher/GesturesActivity.java
+++ b/src/com/android/launcher/GesturesActivity.java
@@ -52,6 +52,9 @@
 
     private static final int DIALOG_RENAME_GESTURE = 1;
 
+    // Type: long (id)
+    private static final String GESTURES_INFO_ID = "gestures.info_id";
+
     private final Comparator<ApplicationInfo> mSorter =
             new LauncherModel.ApplicationInfoComparator();
 
@@ -99,6 +102,25 @@
     }
 
     @Override
+    protected void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+
+        if (mCurrentRenameInfo != null) {
+            outState.putLong(GESTURES_INFO_ID, mCurrentRenameInfo.id);
+        }
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle state) {
+        super.onRestoreInstanceState(state);
+
+        long id = state.getLong(GESTURES_INFO_ID, -1);
+        if (id != -1) {
+            mCurrentRenameInfo = Launcher.getModel().queryGesture(this, String.valueOf(id));
+        }
+    }
+
+    @Override
     public void onCreateContextMenu(ContextMenu menu, View v,
             ContextMenu.ContextMenuInfo menuInfo) {
 
@@ -185,17 +207,32 @@
     private void changeGestureName() {
         final String name = mInput.getText().toString();
         if (!TextUtils.isEmpty(name)) {
-            mCurrentRenameInfo.title = mInput.getText();
-            LauncherModel.updateGestureInDatabase(this, mCurrentRenameInfo);
+            final ApplicationInfo renameInfo = mCurrentRenameInfo;
+            final GesturesActivity.GesturesAdapter adapter = mAdapter;
+            final int count = adapter.getCount();
+
+            // Simple linear search, there should not be enough items to warrant
+            // a more sophisticated search
+            for (int i = 0; i < count; i++) {
+                final ApplicationInfo info = adapter.getItem(i);
+                if (info.id == renameInfo.id) {
+                    info.title = mInput.getText();
+                    LauncherModel.updateGestureInDatabase(this, info);
+                    break;
+                }
+            }
+
+            adapter.notifyDataSetChanged();
         }
+        mCurrentRenameInfo = null;
     }
 
     private void cleanupRenameDialog() {
         if (mRenameDialog != null) {
             mRenameDialog.dismiss();
             mRenameDialog = null;
-            mInput = null;
         }
+        mCurrentRenameInfo = null;
     }
 
     private void deleteGesture(ApplicationInfo info) {