diff options
author | Michael Jurka <mikejurka@google.com> | 2011-08-05 15:58:53 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-05 15:58:53 -0700 |
commit | 57e0ae249038ed9fda446ae45d0b916110eca50f (patch) | |
tree | e77368bfdb6b2d23943d13371151a39477efcaa6 | |
parent | bacd9efce7acbde09cc28b7d449887959165a7a3 (diff) | |
parent | 4554ee16f122a3dbd9a8d3b828f1c8c7e7b7fe99 (diff) | |
download | android_packages_apps_Trebuchet-57e0ae249038ed9fda446ae45d0b916110eca50f.tar.gz android_packages_apps_Trebuchet-57e0ae249038ed9fda446ae45d0b916110eca50f.tar.bz2 android_packages_apps_Trebuchet-57e0ae249038ed9fda446ae45d0b916110eca50f.zip |
Merge "Small code cleanup in folders, prevent crash issue 5082899"
-rw-r--r-- | src/com/android/launcher2/Folder.java | 10 | ||||
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 50 |
2 files changed, 29 insertions, 31 deletions
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java index 641e0f70f..15a0642e2 100644 --- a/src/com/android/launcher2/Folder.java +++ b/src/com/android/launcher2/Folder.java @@ -292,13 +292,6 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList return mInfo; } - void onOpen() { - // When the folder opens, we need to refresh the GridView's selection by - // forcing a layout - // TODO: find out if this is still necessary - mContent.requestLayout(); - } - void bind(FolderInfo info) { mInfo = info; ArrayList<ShortcutInfo> children = info.contents; @@ -849,7 +842,8 @@ public class Folder extends LinearLayout implements DragSource, View.OnClickList private void onCloseComplete() { DragLayer parent = (DragLayer) getParent(); - parent.removeView(Folder.this); + parent.removeView(this); + mDragController.removeDropTarget((DropTarget) this); clearFocus(); if (mRearrangeOnClose) { diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 6d8fd4da2..1af3f71d2 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -1460,25 +1460,6 @@ public final class Launcher extends Activity } } - public void closeFolder() { - Folder folder = mWorkspace.getOpenFolder(); - if (folder != null) { - closeFolder(folder); - } - } - - void closeFolder(Folder folder) { - folder.getInfo().opened = false; - - ViewGroup parent = (ViewGroup) folder.getParent().getParent(); - if (parent != null) { - FolderIcon fi = (FolderIcon) mWorkspace.getViewForTag(folder.mInfo); - shrinkAndFadeInFolderIcon(fi); - mDragController.removeDropTarget((DropTarget)folder); - } - folder.animateClosed(); - } - /** * Re-listen when widgets are reset. */ @@ -1724,11 +1705,34 @@ public final class Launcher extends Activity growAndFadeOutFolderIcon(folderIcon); info.opened = true; - mDragLayer.addView(folder); - mDragController.addDropTarget((DropTarget) folder); - + // Just verify that the folder hasn't already been added to the DragLayer. + // There was a one-off crash where the folder had a parent already. + if (folder.getParent() == null) { + mDragLayer.addView(folder); + mDragController.addDropTarget((DropTarget) folder); + } else { + Log.w(TAG, "Opening folder (" + folder + ") which already has a parent (" + + folder.getParent() + ")."); + } folder.animateOpen(); - folder.onOpen(); + } + + public void closeFolder() { + Folder folder = mWorkspace.getOpenFolder(); + if (folder != null) { + closeFolder(folder); + } + } + + void closeFolder(Folder folder) { + folder.getInfo().opened = false; + + ViewGroup parent = (ViewGroup) folder.getParent().getParent(); + if (parent != null) { + FolderIcon fi = (FolderIcon) mWorkspace.getViewForTag(folder.mInfo); + shrinkAndFadeInFolderIcon(fi); + } + folder.animateClosed(); } public boolean onLongClick(View v) { |