Fixing bug where folders on the first screen and hotseat are not
registered by the Launcher if there are folders on other screens
Instead of maintaing a static map of folder items, searching it
in the workspace during item removal.
Change-Id: I8aa93b3aa1d0bd812204471e3103f4bd29d1cd3d
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 7311cce..06d1694 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -288,8 +288,6 @@
private LauncherClings mClings;
- private static LongArrayMap<FolderInfo> sFolders = new LongArrayMap<>();
-
private View.OnTouchListener mHapticFeedbackTouchListener;
// Related to the auto-advancing of widgets
@@ -2349,7 +2347,6 @@
// Update the model
LauncherModel.addItemToDatabase(Launcher.this, folderInfo, container, screenId,
cellX, cellY);
- sFolders.put(folderInfo.id, folderInfo);
// Create the view
FolderIcon newFolder =
@@ -2372,9 +2369,9 @@
public boolean removeItem(View v, ItemInfo itemInfo, boolean deleteFromDb) {
if (itemInfo instanceof ShortcutInfo) {
// Remove the shortcut from the folder before removing it from launcher
- FolderInfo folderInfo = sFolders.get(itemInfo.container);
- if (folderInfo != null) {
- folderInfo.remove((ShortcutInfo) itemInfo);
+ View folderIcon = mWorkspace.getHomescreenIconByItemId(itemInfo.container);
+ if (folderIcon instanceof FolderIcon) {
+ ((FolderInfo) folderIcon.getTag()).remove((ShortcutInfo) itemInfo);
} else {
mWorkspace.removeWorkspaceItem(v);
}
@@ -2383,7 +2380,6 @@
}
} else if (itemInfo instanceof FolderInfo) {
final FolderInfo folderInfo = (FolderInfo) itemInfo;
- unbindFolder(folderInfo);
mWorkspace.removeWorkspaceItem(v);
if (deleteFromDb) {
LauncherModel.deleteFolderAndContentsFromDatabase(this, folderInfo);
@@ -2404,13 +2400,6 @@
}
/**
- * Unbinds any launcher references to the folder.
- */
- private void unbindFolder(FolderInfo folder) {
- sFolders.remove(folder.id);
- }
-
- /**
* Deletes the widget info and the widget id.
*/
private void deleteWidgetInfo(final LauncherAppWidgetInfo widgetInfo) {
@@ -3905,21 +3894,6 @@
workspace.requestLayout();
}
- /**
- * Implementation of the method from LauncherModel.Callbacks.
- */
- public void bindFolders(final LongArrayMap<FolderInfo> folders) {
- Runnable r = new Runnable() {
- public void run() {
- bindFolders(folders);
- }
- };
- if (waitUntilResume(r)) {
- return;
- }
- sFolders = folders.clone();
- }
-
private void bindSafeModeWidget(LauncherAppWidgetInfo item) {
PendingAppWidgetHostView view = new PendingAppWidgetHostView(this, item, true);
view.updateIcon(mIconCache);
@@ -4698,7 +4672,6 @@
Log.d(TAG, "mWorkspaceLoading=" + mWorkspaceLoading);
Log.d(TAG, "mRestoring=" + mRestoring);
Log.d(TAG, "mWaitingForResult=" + mWaitingForResult);
- Log.d(TAG, "sFolders.size=" + sFolders.size());
mModel.dumpState();
// TODO(hyunyoungs): add mWidgetsView.dumpState(); or mWidgetsModel.dumpState();