diff options
author | Adam Cohen <adamcohen@google.com> | 2012-10-04 16:53:44 -0700 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2012-10-04 16:53:44 -0700 |
commit | dd70d66852bb8bd16f55796e546ba290360d1198 (patch) | |
tree | 5f9bedc0faebee02f2d36c81e4b028c4d2ab88ee /src/com/android/launcher2 | |
parent | a2042d0ae9dffcfeafe4e2e0b00cee069ce5f773 (diff) | |
download | android_packages_apps_Trebuchet-dd70d66852bb8bd16f55796e546ba290360d1198.tar.gz android_packages_apps_Trebuchet-dd70d66852bb8bd16f55796e546ba290360d1198.tar.bz2 android_packages_apps_Trebuchet-dd70d66852bb8bd16f55796e546ba290360d1198.zip |
Fix for widgets with config not getting size info (issue 7266053)
Change-Id: I0b55555ed38d4f2a70345d1b6316a075a9346111
Diffstat (limited to 'src/com/android/launcher2')
-rw-r--r-- | src/com/android/launcher2/AppsCustomizePagedView.java | 5 | ||||
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 14 | ||||
-rw-r--r-- | src/com/android/launcher2/PendingAddItemInfo.java | 3 |
3 files changed, 19 insertions, 3 deletions
diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java index 817eb413a..609bb6d09 100644 --- a/src/com/android/launcher2/AppsCustomizePagedView.java +++ b/src/com/android/launcher2/AppsCustomizePagedView.java @@ -628,7 +628,10 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen private void preloadWidget(final PendingAddWidgetInfo info) { final AppWidgetProviderInfo pInfo = info.info; + final Bundle options = getDefaultOptionsForWidget(mLauncher, info); + if (pInfo.configure != null) { + info.bindOptions = options; return; } @@ -637,8 +640,6 @@ public class AppsCustomizePagedView extends PagedViewWithDraggableItems implemen @Override public void run() { mWidgetLoadingId = mLauncher.getAppWidgetHost().allocateAppWidgetId(); - - Bundle options = getDefaultOptionsForWidget(mLauncher, info); // Options will be null for platforms with JB or lower, so this serves as an // SDK level check. if (options == null) { diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 4ae9c7d26..3fdf5c3ce 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -1746,13 +1746,25 @@ public final class Launcher extends Activity // In this case, we either need to start an activity to get permission to bind // the widget, or we need to start an activity to configure the widget, or both. appWidgetId = getAppWidgetHost().allocateAppWidgetId(); - if (mAppWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, info.componentName)) { + Bundle options = info.bindOptions; + + boolean success = false; + if (options != null) { + success = mAppWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, + info.componentName, options); + } else { + success = mAppWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, + info.componentName); + } + if (success) { addAppWidgetImpl(appWidgetId, info, null, info.info); } else { mPendingAddWidgetInfo = info.info; Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_PROVIDER, info.componentName); + // TODO: we need to make sure that this accounts for the options bundle. + // intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_OPTIONS, options); startActivityForResult(intent, REQUEST_BIND_APPWIDGET); } } diff --git a/src/com/android/launcher2/PendingAddItemInfo.java b/src/com/android/launcher2/PendingAddItemInfo.java index 9a133ed27..a1e7b06a5 100644 --- a/src/com/android/launcher2/PendingAddItemInfo.java +++ b/src/com/android/launcher2/PendingAddItemInfo.java @@ -20,6 +20,7 @@ import android.appwidget.AppWidgetHostView; import android.appwidget.AppWidgetProviderInfo; import android.content.ComponentName; import android.content.pm.ActivityInfo; +import android.os.Bundle; import android.os.Parcelable; /** @@ -55,6 +56,7 @@ class PendingAddWidgetInfo extends PendingAddItemInfo { int icon; AppWidgetProviderInfo info; AppWidgetHostView boundWidget; + Bundle bindOptions = null; // Any configuration data that we want to pass to a configuration activity when // starting up a widget @@ -95,6 +97,7 @@ class PendingAddWidgetInfo extends PendingAddItemInfo { spanY = copy.spanY; minSpanX = copy.minSpanX; minSpanY = copy.minSpanY; + bindOptions = copy.bindOptions == null ? null : (Bundle) copy.bindOptions.clone(); } @Override |