Fix 3373059: Crash when drag cancelled in spring-loaded state
diff --git a/src/com/android/launcher2/AllAppsPagedView.java b/src/com/android/launcher2/AllAppsPagedView.java
index 64da1b4..fe7312d 100644
--- a/src/com/android/launcher2/AllAppsPagedView.java
+++ b/src/com/android/launcher2/AllAppsPagedView.java
@@ -288,7 +288,7 @@
endChoiceMode();
}
tearDownDragMode();
- mLauncher.getWorkspace().onDragStopped();
+ mLauncher.getWorkspace().onDragStopped(success);
mLauncher.unlockScreenOrientation();
}
diff --git a/src/com/android/launcher2/CustomizePagedView.java b/src/com/android/launcher2/CustomizePagedView.java
index d9a6612..c74e5f4 100644
--- a/src/com/android/launcher2/CustomizePagedView.java
+++ b/src/com/android/launcher2/CustomizePagedView.java
@@ -327,7 +327,7 @@
@Override
public void onDropCompleted(View target, boolean success) {
resetCheckedGrandchildren();
- mLauncher.getWorkspace().onDragStopped();
+ mLauncher.getWorkspace().onDragStopped(success);
mLauncher.unlockScreenOrientation();
}
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index 56055d9..b9a2b62 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -1458,6 +1458,7 @@
cl.setIsDefaultDropTarget(i == mCurrentPage);
case BOTTOM_HIDDEN:
case BOTTOM_VISIBLE:
+ case SPRING_LOADED:
if (!isDragHappening) {
// even if a drag isn't happening, we don't want to show a screen as
// accepting drops if it doesn't have at least one free cell
@@ -1468,8 +1469,7 @@
cl.setAcceptsDrops(cl.findCellForSpan(null, spanX, spanY));
break;
default:
- throw new RuntimeException(
- "updateWhichPagesAcceptDropsHelper passed an unhandled ShrinkState");
+ throw new RuntimeException("Unhandled ShrinkState " + state);
}
}
}
@@ -1499,7 +1499,11 @@
// we call this method whenever a drag and drop in Launcher finishes, even if Workspace was
// never dragged over
- public void onDragStopped() {
+ public void onDragStopped(boolean success) {
+ // In the success case, DragController has already called onDragExit()
+ if (!success) {
+ doDragExit();
+ }
mIsDragInProcess = false;
updateWhichPagesAcceptDrops(mShrinkState);
}