diff options
author | Adam Cohen <adamcohen@google.com> | 2011-06-24 15:57:39 -0700 |
---|---|---|
committer | Adam Cohen <adamcohen@google.com> | 2011-06-24 15:58:01 -0700 |
commit | df1e4e868a1970b756486dadd652651d40276d36 (patch) | |
tree | 896cc257dc813d709de6eae2212dd6faee0d4575 /src | |
parent | d63cfa96814fa1a51490950b8df9853eef305cbb (diff) | |
download | android_packages_apps_Trebuchet-df1e4e868a1970b756486dadd652651d40276d36.tar.gz android_packages_apps_Trebuchet-df1e4e868a1970b756486dadd652651d40276d36.tar.bz2 android_packages_apps_Trebuchet-df1e4e868a1970b756486dadd652651d40276d36.zip |
Keeping folders synced when applications are uninstalled
-> fix bug 4905712
Change-Id: I4a250fd134e6d03bae30cfde6b33a82ed6f5fcef
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/Folder.java | 17 | ||||
-rw-r--r-- | src/com/android/launcher2/Workspace.java | 17 |
2 files changed, 19 insertions, 15 deletions
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java index 60c7ed499..0454430ff 100644 --- a/src/com/android/launcher2/Folder.java +++ b/src/com/android/launcher2/Folder.java @@ -76,7 +76,6 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL private final LayoutInflater mInflater; private final IconCache mIconCache; private int mState = STATE_NONE; - private int[] mDragItemPosition = new int[2]; private static final int FULL_GROW = 0; private static final int PARTIAL_GROW = 1; private static final int REORDER_ANIMATION_DURATION = 230; @@ -213,8 +212,6 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL mLauncher.getWorkspace().onDragStartedWithItem(v); mDragController.startDrag(v, this, item, DragController.DRAG_ACTION_COPY); - mDragItemPosition[0] = item.cellX; - mDragItemPosition[1] = item.cellY; mIconDrawable = ((TextView) v).getCompoundDrawables()[1]; mCurrentDragInfo = item; @@ -865,7 +862,7 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL public void onRemove(ShortcutInfo item) { mItemsInvalidated = true; if (item == mCurrentDragInfo) return; - View v = mContent.getChildAt(mDragItemPosition[0], mDragItemPosition[1]); + View v = getViewForInfo(item); mContent.removeView(v); if (mState == STATE_ANIMATING) { mRearrangeOnClose = true; @@ -877,6 +874,18 @@ public class Folder extends LinearLayout implements DragSource, OnItemLongClickL } } + private View getViewForInfo(ShortcutInfo item) { + for (int j = 0; j < mContent.getCountY(); j++) { + for (int i = 0; i < mContent.getCountX(); i++) { + View v = mContent.getChildAt(i, j); + if (v.getTag() == item) { + return v; + } + } + } + return null; + } + public void onItemsChanged() { } public void onTitleChanged(CharSequence title) { diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java index c0439ddc9..b24014baa 100644 --- a/src/com/android/launcher2/Workspace.java +++ b/src/com/android/launcher2/Workspace.java @@ -3404,9 +3404,9 @@ public class Workspace extends SmoothPagedView } else if (tag instanceof FolderInfo) { final FolderInfo info = (FolderInfo) tag; final ArrayList<ShortcutInfo> contents = info.contents; - final ArrayList<ShortcutInfo> toRemove = new ArrayList<ShortcutInfo>(1); final int contentsCount = contents.size(); - boolean removedFromFolder = false; + final ArrayList<ShortcutInfo> appsToRemoveFromFolder = + new ArrayList<ShortcutInfo>(); for (int k = 0; k < contentsCount; k++) { final ShortcutInfo appInfo = contents.get(k); @@ -3416,19 +3416,14 @@ public class Workspace extends SmoothPagedView if (Intent.ACTION_MAIN.equals(intent.getAction()) && name != null) { for (String packageName: packageNames) { if (packageName.equals(name.getPackageName())) { - toRemove.add(appInfo); - LauncherModel.deleteItemFromDatabase(mLauncher, appInfo); - removedFromFolder = true; + appsToRemoveFromFolder.add(appInfo); } } } } - - contents.removeAll(toRemove); - if (removedFromFolder) { - final Folder folder = getOpenFolder(); - if (folder != null) - folder.notifyDataSetChanged(); + for (ShortcutInfo item: appsToRemoveFromFolder) { + info.remove(item); + LauncherModel.deleteItemFromDatabase(mLauncher, item); } } else if (tag instanceof LauncherAppWidgetInfo) { final LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) tag; |