diff --git a/src/com/android/launcher3/DragController.java b/src/com/android/launcher3/DragController.java index 2b4f019c28..1373bf2133 100644 --- a/src/com/android/launcher3/DragController.java +++ b/src/com/android/launcher3/DragController.java @@ -436,6 +436,14 @@ public class DragController implements DragDriver.EventListener { handleMoveEvent(dragLayerPos[0], dragLayerPos[1]); } + @Override + public void onDriverDragExitWindow() { + if (mLastDropTarget != null) { + mLastDropTarget.onDragExit(mDragObject); + mLastDropTarget = null; + } + } + @Override public void onDriverDragEnd(float x, float y, DropTarget dropTargetOverride) { final int[] dragLayerPos = getClampedDragLayerPos(x, y); diff --git a/src/com/android/launcher3/DragDriver.java b/src/com/android/launcher3/DragDriver.java index 6cd52bd2c1..9ee4b3d461 100644 --- a/src/com/android/launcher3/DragDriver.java +++ b/src/com/android/launcher3/DragDriver.java @@ -32,6 +32,7 @@ public abstract class DragDriver { public interface EventListener { void onDriverDragMove(float x, float y); + void onDriverDragExitWindow(); void onDriverDragEnd(float x, float y, DropTarget dropTargetOverride); void onDriverDragCancel(); } @@ -165,6 +166,7 @@ class SystemDragDriver extends DragDriver { return true; case DragEvent.ACTION_DRAG_EXITED: + mEventListener.onDriverDragExitWindow(); return true; case DragEvent.ACTION_DRAG_ENDED: