From 4feb27e6b1b548be7ed8abd7d76fd4d8d5dcfa6e Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 26 Oct 2016 12:51:14 -0700 Subject: [PATCH] Restore mDragInfo when deferring onDropComplete() for uninstall. We moved mDragInfo = null to onDragEnd() since onDropComplete() isn't called for pre-drags, but this led to NPE when returning from unistall or app info since onDropComplete() is called after onDragEnd() in this case. So now we restore a copy of mDragInfo. Bug: 32415014 Change-Id: I7ef4fb7145c3c78039af1131e77538969db58141 --- src/com/android/launcher3/Workspace.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index ae34638203..f7147e49f2 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -3656,8 +3656,10 @@ public class Workspace extends PagedView public void onDropCompleted(final View target, final DragObject d, final boolean isFlingToDelete, final boolean success) { if (mDeferDropAfterUninstall) { + final CellLayout.CellInfo dragInfo = mDragInfo; mDeferredAction = new Runnable() { public void run() { + mDragInfo = dragInfo; // Restore the drag info that was cleared in onDragEnd() onDropCompleted(target, d, isFlingToDelete, success); mDeferredAction = null; } @@ -3685,6 +3687,7 @@ public class Workspace extends PagedView && mDragInfo.cell != null) { mDragInfo.cell.setVisibility(VISIBLE); } + mDragInfo = null; if (!isFlingToDelete) { // Fling to delete already exits spring loaded mode after the animation finishes.