diff options
author | Winson Chung <winsonc@google.com> | 2013-05-01 16:53:33 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2013-05-03 14:47:51 -0700 |
commit | 83892cc0768bd6d7f0827886e9e7a2eb3eed2b01 (patch) | |
tree | f1c49511bade85d7cdc57e5001c8b361ebc48615 /src/com/android/launcher2/Launcher.java | |
parent | 81426b9bfee67c1313f59629e9dca523fe2c46d1 (diff) | |
download | android_packages_apps_Trebuchet-83892cc0768bd6d7f0827886e9e7a2eb3eed2b01.tar.gz android_packages_apps_Trebuchet-83892cc0768bd6d7f0827886e9e7a2eb3eed2b01.tar.bz2 android_packages_apps_Trebuchet-83892cc0768bd6d7f0827886e9e7a2eb3eed2b01.zip |
Fixing issue where updating the visibility of one application can trigger all icons to disappear. (Bug 8757421)
- Also queueing bindComponentsRemoved() and bindPackagesUpdated() to wait for resume (Bug 8594153)
Change-Id: I44028fe79f6fa6bcd6b829e36f3f5b9ed756dc4d
Diffstat (limited to 'src/com/android/launcher2/Launcher.java')
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 0aab2acaf..5ed7f6b78 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -3704,27 +3704,51 @@ public final class Launcher extends Activity } /** - * A package was uninstalled. + * A package was uninstalled. We take both the super set of packageNames + * in addition to specific applications to remove, the reason being that + * this can be called when a package is updated as well. In that scenario, + * we only remove specific components from the workspace, where as + * package-removal should clear all items by package name. * * Implementation of the method from LauncherModel.Callbacks. */ - public void bindAppsRemoved(ArrayList<String> packageNames, boolean permanent) { - if (permanent) { - mWorkspace.removeItems(packageNames); + public void bindComponentsRemoved(final ArrayList<String> packageNames, + final ArrayList<ApplicationInfo> appInfos, + final boolean matchPackageNamesOnly) { + if (waitUntilResume(new Runnable() { + public void run() { + bindComponentsRemoved(packageNames, appInfos, matchPackageNamesOnly); + } + })) { + return; + } + + if (matchPackageNamesOnly) { + mWorkspace.removeItemsByPackageName(packageNames); + } else { + mWorkspace.removeItemsByApplicationInfo(appInfos); } if (mAppsCustomizeContent != null) { - mAppsCustomizeContent.removeApps(packageNames); + mAppsCustomizeContent.removeApps(appInfos); } // Notify the drag controller - mDragController.onAppsRemoved(packageNames, this); + mDragController.onAppsRemoved(appInfos, this); } /** * A number of packages were updated. */ public void bindPackagesUpdated() { + if (waitUntilResume(new Runnable() { + public void run() { + bindPackagesUpdated(); + } + })) { + return; + } + if (mAppsCustomizeContent != null) { mAppsCustomizeContent.onPackagesUpdated(); } |