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) {