From 9932a9b1e66fed4b5f38ce50f13d56331bbdcd7e Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Tue, 2 Aug 2011 22:14:07 -0700 Subject: [PATCH] Fixing weird deferred click events after deleting folder -> Fixing issue 5055487 Change-Id: I932f95f29322fa50035b13063ab51fad2d2217e8 --- src/com/android/launcher2/DragController.java | 5 ++++- src/com/android/launcher2/Launcher.java | 13 +++++++++++-- src/com/android/launcher2/LauncherModel.java | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java index 28c53d1635..647a425e6d 100644 --- a/src/com/android/launcher2/DragController.java +++ b/src/com/android/launcher2/DragController.java @@ -31,6 +31,7 @@ import android.view.ViewConfiguration; import android.view.inputmethod.InputMethodManager; import com.android.launcher.R; +import com.android.launcher2.DropTarget.DragObject; import java.util.ArrayList; @@ -81,7 +82,7 @@ public class DragController { */ private int mScrollZone; - private DropTarget.DragObject mDragObject = new DropTarget.DragObject(); + private DropTarget.DragObject mDragObject; /** Who can receive drop events */ private ArrayList mDropTargets = new ArrayList(); @@ -275,6 +276,8 @@ public class DragController { mDragging = true; + mDragObject = new DropTarget.DragObject(); + mDragObject.dragComplete = false; mDragObject.xOffset = mMotionDownX - (dragLayerX + dragRegionLeft); mDragObject.yOffset = mMotionDownY - (dragLayerY + dragRegionTop); diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index a8782ba81e..ac85f98ab3 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -1533,8 +1533,15 @@ public final class Launcher extends Activity * @param v The view representing the clicked shortcut. */ public void onClick(View v) { - // Make sure that rogue clicks don't get through while allapps is launching - if (mWorkspace.isSwitchingState()) return; + // Make sure that rogue clicks don't get through while allapps is launching, or after the + // view has detached (it's possible for this to happen if the view is removed mid touch). + if (v.getWindowToken() == null) { + return; + } + + if (mWorkspace.isSwitchingState()) { + return; + } Object tag = v.getTag(); if (tag instanceof ShortcutInfo) { @@ -1692,6 +1699,7 @@ public final class Launcher extends Activity } private void growAndFadeOutFolderIcon(FolderIcon fi) { + if (fi == null) return; PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 0); PropertyValuesHolder scaleX = PropertyValuesHolder.ofFloat("scaleX", 1.5f); PropertyValuesHolder scaleY = PropertyValuesHolder.ofFloat("scaleY", 1.5f); @@ -1708,6 +1716,7 @@ public final class Launcher extends Activity } private void shrinkAndFadeInFolderIcon(FolderIcon fi) { + if (fi == null) return; PropertyValuesHolder alpha = PropertyValuesHolder.ofFloat("alpha", 1.0f); PropertyValuesHolder scaleX = PropertyValuesHolder.ofFloat("scaleX", 1.0f); PropertyValuesHolder scaleY = PropertyValuesHolder.ofFloat("scaleY", 1.0f); diff --git a/src/com/android/launcher2/LauncherModel.java b/src/com/android/launcher2/LauncherModel.java index c8cf1f832f..6658f07c26 100644 --- a/src/com/android/launcher2/LauncherModel.java +++ b/src/com/android/launcher2/LauncherModel.java @@ -506,7 +506,7 @@ public class LauncherModel extends BroadcastReceiver { sFolders.remove(info.id); sWorkspaceItems.remove(info); - cr.delete(LauncherSettings.Favorites.CONTENT_URI, + cr.delete(LauncherSettings.Favorites.CONTENT_URI_NO_NOTIFICATION, LauncherSettings.Favorites.CONTAINER + "=" + info.id, null); for (ItemInfo childInfo : info.contents) { sItemsIdMap.remove(childInfo.id);