diff options
author | Winson Chung <winsonc@google.com> | 2013-12-09 16:57:45 -0800 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2013-12-09 17:24:48 -0800 |
commit | 33231f587e1a6f716af68e6198df774d2847a8e5 (patch) | |
tree | 21357b3a777ad0ab5eb9f2c9628157897b44602b /src/com/android | |
parent | fe2fb82657d52c17c9a09fb74e140b80db634a8c (diff) | |
download | android_packages_apps_Trebuchet-33231f587e1a6f716af68e6198df774d2847a8e5.tar.gz android_packages_apps_Trebuchet-33231f587e1a6f716af68e6198df774d2847a8e5.tar.bz2 android_packages_apps_Trebuchet-33231f587e1a6f716af68e6198df774d2847a8e5.zip |
Fixing crash in empty folders. (Bug 11627191)
Change-Id: I7a0e23e16a7546a9612d3406257e15be758d4c52
Signed-off-by: Winson Chung <winsonc@google.com>
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/launcher3/Folder.java | 15 | ||||
-rw-r--r-- | src/com/android/launcher3/FolderInfo.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 5 |
3 files changed, 18 insertions, 6 deletions
diff --git a/src/com/android/launcher3/Folder.java b/src/com/android/launcher3/Folder.java index bbe6af2f6..9637bbb48 100644 --- a/src/com/android/launcher3/Folder.java +++ b/src/com/android/launcher3/Folder.java @@ -408,6 +408,15 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList mFolderName.setText(""); } updateItemLocationsInDatabase(); + + // In case any children didn't come across during loading, clean up the folder accordingly + mFolderIcon.post(new Runnable() { + public void run() { + if (getItemCount() <= 1) { + replaceFolderWithFinalItem(); + } + } + }); } /** @@ -826,7 +835,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList View v = list.get(i); ItemInfo info = (ItemInfo) v.getTag(); LauncherModel.moveItemInDatabase(mLauncher, info, mInfo.id, 0, - info.cellX, info.cellY); + info.cellX, info.cellY); } } @@ -1075,7 +1084,7 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList public void run() { CellLayout cellLayout = mLauncher.getCellLayout(mInfo.container, mInfo.screenId); - View child = null; + View child = null; // Move the item from the folder to the workspace, in the position of the folder if (getItemCount() == 1) { ShortcutInfo finalItem = mInfo.contents.get(0); @@ -1105,6 +1114,8 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList View finalChild = getItemAt(0); if (finalChild != null) { mFolderIcon.performDestroyAnimation(finalChild, onCompleteRunnable); + } else { + onCompleteRunnable.run(); } mDestroyed = true; } diff --git a/src/com/android/launcher3/FolderInfo.java b/src/com/android/launcher3/FolderInfo.java index bb5ae8200..d45e4e47b 100644 --- a/src/com/android/launcher3/FolderInfo.java +++ b/src/com/android/launcher3/FolderInfo.java @@ -16,10 +16,10 @@ package com.android.launcher3; -import java.util.ArrayList; - import android.content.ContentValues; +import java.util.ArrayList; + /** * Represents a folder containing shortcuts or apps. */ diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 74f28b304..a69617ac7 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -584,8 +584,9 @@ public class LauncherModel extends BroadcastReceiver { // as in Workspace.onDrop. Here, we just add/remove them from the list of items // that are on the desktop, as appropriate ItemInfo modelItem = sBgItemsIdMap.get(itemId); - if (modelItem.container == LauncherSettings.Favorites.CONTAINER_DESKTOP || - modelItem.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT) { + if (modelItem != null && + (modelItem.container == LauncherSettings.Favorites.CONTAINER_DESKTOP || + modelItem.container == LauncherSettings.Favorites.CONTAINER_HOTSEAT)) { switch (modelItem.itemType) { case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION: case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT: |