From 8a4351063f02c0e8d64ee3ace651b227e9f8321f Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Thu, 30 Aug 2012 17:16:53 -0700 Subject: [PATCH] Fixing issue where we were not removing items from LauncherModel and only the add-queue. (Bug 7078244) Change-Id: I5660b447521646f820fb2497f327e965d99ac207 --- src/com/android/launcher2/LauncherModel.java | 18 ++++++++++++++++++ src/com/android/launcher2/Workspace.java | 10 ++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index 269a0fd603..909cc795f0 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -2167,6 +2167,24 @@ public class LauncherModel extends BroadcastReceiver { return info; } + /** + * Returns the set of workspace ShortcutInfos with the specified intent. + */ + static ArrayList getWorkspaceShortcutItemInfosWithIntent(Intent intent) { + ArrayList items = new ArrayList(); + synchronized (sBgLock) { + for (ItemInfo info : sBgWorkspaceItems) { + if (info instanceof ShortcutInfo) { + ShortcutInfo shortcut = (ShortcutInfo) info; + if (shortcut.intent.toUri(0).equals(intent.toUri(0))) { + items.add(shortcut); + } + } + } + } + return items; + } + /** * Make an ShortcutInfo object for a shortcut that isn't an application. */ diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index 504f9dcfe6..897e95a1f4 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -3697,6 +3697,8 @@ public class Workspace extends SmoothPagedView } // Clean up new-apps animation list + final LauncherModel model = mLauncher.getModel(); + final Context context = getContext(); post(new Runnable() { @Override public void run() { @@ -3717,6 +3719,14 @@ public class Workspace extends SmoothPagedView if (packageNames.contains(pn)) { iter.remove(); } + + // It is possible that we've queued an item to be loaded, yet it has + // not been added to the workspace, so remove those items as well. + ArrayList shortcuts = + model.getWorkspaceShortcutItemInfosWithIntent(intent); + for (ItemInfo info : shortcuts) { + model.deleteItemFromDatabase(context, info); + } } catch (URISyntaxException e) {} } }