summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/Launcher.java
diff options
context:
space:
mode:
authorWinson Chung <winsonc@google.com>2013-05-01 16:53:33 -0700
committerWinson Chung <winsonc@google.com>2013-05-03 14:47:51 -0700
commit83892cc0768bd6d7f0827886e9e7a2eb3eed2b01 (patch)
treef1c49511bade85d7cdc57e5001c8b361ebc48615 /src/com/android/launcher2/Launcher.java
parent81426b9bfee67c1313f59629e9dca523fe2c46d1 (diff)
downloadandroid_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.java36
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();
}