summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorAdam Cohen <adamcohen@google.com>2011-06-24 15:57:39 -0700
committerAdam Cohen <adamcohen@google.com>2011-06-24 15:58:01 -0700
commitdf1e4e868a1970b756486dadd652651d40276d36 (patch)
tree896cc257dc813d709de6eae2212dd6faee0d4575 /src/com/android
parentd63cfa96814fa1a51490950b8df9853eef305cbb (diff)
downloadandroid_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/com/android')
-rw-r--r--src/com/android/launcher2/Folder.java17
-rw-r--r--src/com/android/launcher2/Workspace.java17
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;