From 18042c82c5847d3caf9af65583c5590c17927c3d Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Fri, 6 Nov 2009 11:44:55 -0800 Subject: [PATCH] [Launcher2] Delete app widgets when their configuration is cancelled or there's not enough room on Home. Bugs #2234228 and #2244729. Approved by mcleron Change-Id: I15e4850d8c1a821497df5d32e5fb63b3400d1e44 --- src/com/android/launcher2/Launcher.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 6cccb77f29..9aa6cd3041 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -376,8 +376,9 @@ public final class Launcher extends Activity // We just wanted the activity result here so we can clear mWaitingForResult break; } - } else if (requestCode == REQUEST_PICK_APPWIDGET && - resultCode == RESULT_CANCELED && data != null) { + } else if ((requestCode == REQUEST_PICK_APPWIDGET || + requestCode == REQUEST_CREATE_APPWIDGET) && resultCode == RESULT_CANCELED && + data != null) { // Clean up the appWidgetId if we canceled int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); if (appWidgetId != -1) { @@ -680,7 +681,7 @@ public final class Launcher extends Activity Bundle extras = data.getExtras(); int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); - d(LOG_TAG, "dumping extras content="+extras.toString()); + if (LOGD) d(LOG_TAG, "dumping extras content=" + extras.toString()); AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId); @@ -690,7 +691,10 @@ public final class Launcher extends Activity // Try finding open space on Launcher screen final int[] xy = mCellCoordinates; - if (!findSlot(cellInfo, xy, spans[0], spans[1])) return; + if (!findSlot(cellInfo, xy, spans[0], spans[1])) { + if (appWidgetId != -1) mAppWidgetHost.deleteAppWidgetId(appWidgetId); + return; + } // Build Launcher-specific widget info and save to database LauncherAppWidgetInfo launcherInfo = new LauncherAppWidgetInfo(appWidgetId);