diff --git a/src/com/android/launcher/GesturesActivity.java b/src/com/android/launcher/GesturesActivity.java index c936576214..3ea49e251c 100644 --- a/src/com/android/launcher/GesturesActivity.java +++ b/src/com/android/launcher/GesturesActivity.java @@ -52,6 +52,9 @@ public class GesturesActivity extends ListActivity { private static final int DIALOG_RENAME_GESTURE = 1; + // Type: long (id) + private static final String GESTURES_INFO_ID = "gestures.info_id"; + private final Comparator mSorter = new LauncherModel.ApplicationInfoComparator(); @@ -98,6 +101,25 @@ public class GesturesActivity extends ListActivity { } } + @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 @@ public class GesturesActivity extends ListActivity { 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) {