summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2013-11-05 02:26:31 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-11-05 02:26:45 +0000
commitb2af6076c70cd3d09e23a4999803b3108aa469f4 (patch)
treeac47f993b33667cbe92a576afabfc1d3e74afba5 /src
parentc18e4a926530cf458bdc67abfdd60488ff62d758 (diff)
parent4637b5ada9cccb5f698fcff73a96a7ce16148e5b (diff)
downloadandroid_packages_apps_Trebuchet-b2af6076c70cd3d09e23a4999803b3108aa469f4.tar.gz
android_packages_apps_Trebuchet-b2af6076c70cd3d09e23a4999803b3108aa469f4.tar.bz2
android_packages_apps_Trebuchet-b2af6076c70cd3d09e23a4999803b3108aa469f4.zip
Merge "Ensuring that widget ids are cleaned up" into jb-ub-now-jetsonic
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/Launcher.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index a1cfff7b2..0637b24f0 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -181,6 +181,8 @@ public class Launcher extends Activity
private static final String RUNTIME_STATE_PENDING_ADD_SPAN_Y = "launcher.add_span_y";
// Type: parcelable
private static final String RUNTIME_STATE_PENDING_ADD_WIDGET_INFO = "launcher.add_widget_info";
+ // Type: parcelable
+ private static final String RUNTIME_STATE_PENDING_ADD_WIDGET_ID = "launcher.add_widget_id";
private static final String TOOLBAR_ICON_METADATA_NAME = "com.android.launcher.toolbar_icon";
private static final String TOOLBAR_SEARCH_ICON_METADATA_NAME =
@@ -227,6 +229,7 @@ public class Launcher extends Activity
private ItemInfo mPendingAddInfo = new ItemInfo();
private AppWidgetProviderInfo mPendingAddWidgetInfo;
+ private int mPendingAddWidgetId = -1;
private int[] mTmpAddItemCellCoordinates = new int[2];
@@ -704,6 +707,8 @@ public class Launcher extends Activity
final int requestCode, final int resultCode, final Intent data) {
// Reset the startActivity waiting flag
mWaitingForResult = false;
+ int pendingAddWidgetId = mPendingAddWidgetId;
+ mPendingAddWidgetId = -1;
Runnable exitSpringLoaded = new Runnable() {
@Override
@@ -737,8 +742,15 @@ public class Launcher extends Activity
// We have special handling for widgets
if (isWidgetDrop) {
- final int appWidgetId = data != null ?
- data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1) : -1;
+ final int appWidgetId;
+ int widgetId = data != null ? data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1)
+ : -1;
+ if (widgetId < 0) {
+ appWidgetId = pendingAddWidgetId;
+ } else {
+ appWidgetId = widgetId;
+ }
+
final int result;
final Runnable onComplete;
if (appWidgetId < 0 || resultCode == RESULT_CANCELED) {
@@ -819,6 +831,7 @@ public class Launcher extends Activity
}
};
} else if (resultCode == RESULT_CANCELED) {
+ mAppWidgetHost.deleteAppWidgetId(appWidgetId);
animationType = Workspace.CANCEL_TWO_STAGE_WIDGET_DROP_ANIMATION;
}
if (mDragLayer.getAnimatedView() != null) {
@@ -1122,6 +1135,7 @@ public class Launcher extends Activity
mPendingAddInfo.spanX = savedState.getInt(RUNTIME_STATE_PENDING_ADD_SPAN_X);
mPendingAddInfo.spanY = savedState.getInt(RUNTIME_STATE_PENDING_ADD_SPAN_Y);
mPendingAddWidgetInfo = savedState.getParcelable(RUNTIME_STATE_PENDING_ADD_WIDGET_INFO);
+ mPendingAddWidgetId = savedState.getInt(RUNTIME_STATE_PENDING_ADD_WIDGET_ID);
mWaitingForResult = true;
mRestoring = true;
}
@@ -1746,6 +1760,7 @@ public class Launcher extends Activity
outState.putInt(RUNTIME_STATE_PENDING_ADD_SPAN_X, mPendingAddInfo.spanX);
outState.putInt(RUNTIME_STATE_PENDING_ADD_SPAN_Y, mPendingAddInfo.spanY);
outState.putParcelable(RUNTIME_STATE_PENDING_ADD_WIDGET_INFO, mPendingAddWidgetInfo);
+ outState.putInt(RUNTIME_STATE_PENDING_ADD_WIDGET_ID, mPendingAddWidgetId);
}
if (mFolderInfo != null && mWaitingForResult) {
@@ -1929,6 +1944,7 @@ public class Launcher extends Activity
delay) {
if (appWidgetInfo.configure != null) {
mPendingAddWidgetInfo = appWidgetInfo;
+ mPendingAddWidgetId = appWidgetId;
// Launch over to configure widget, if needed
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);