From ba1ca8cf7ae52f730de9a8d543f8f0d484e76c32 Mon Sep 17 00:00:00 2001 From: Patrick Dubroy Date: Wed, 2 Mar 2011 15:06:36 -0800 Subject: Fix 3377113: Mini homescreen outline wrong color Couldn't repro this reliably, but the only way I could see it happening is if we got an UP event without a MOVE at the same location. This patch prevents that from happening. Change-Id: I473c4ea50474b45da8c5537efe39177c1423ae20 --- src/com/android/launcher2/DragController.java | 16 +++++++--------- src/com/android/launcher2/DragScroller.java | 2 ++ 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/com/android') diff --git a/src/com/android/launcher2/DragController.java b/src/com/android/launcher2/DragController.java index e54669718..331ebd635 100644 --- a/src/com/android/launcher2/DragController.java +++ b/src/com/android/launcher2/DragController.java @@ -557,6 +557,9 @@ public class DragController { handleMoveEvent(screenX, screenY); break; case MotionEvent.ACTION_UP: + // Ensure that we've processed a move event at the current pointer location. + handleMoveEvent(screenX, screenY); + mHandler.removeCallbacks(mScrollRunnable); if (mDragging) { drop(screenX, screenY); @@ -571,10 +574,11 @@ public class DragController { return true; } - private boolean drop(float x, float y) { + private void drop(float x, float y) { final int[] coordinates = mCoordinatesTemp; DropTarget dropTarget = findDropTarget((int) x, (int) y, coordinates); + boolean accepted = false; if (dropTarget != null) { dropTarget.onDragExit(mDragSource, coordinates[0], coordinates[1], (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo); @@ -582,16 +586,10 @@ public class DragController { (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo)) { dropTarget.onDrop(mDragSource, coordinates[0], coordinates[1], (int) mTouchOffsetX, (int) mTouchOffsetY, mDragView, mDragInfo); - mDragSource.onDropCompleted((View) dropTarget, mDragInfo, true); - return true; - } else { - mDragSource.onDropCompleted((View) dropTarget, mDragInfo, false); - return true; + accepted = true; } - } else { - mDragSource.onDropCompleted(null, mDragInfo, false); } - return false; + mDragSource.onDropCompleted(null, mDragInfo, accepted); } private DropTarget findDropTarget(int x, int y, int[] dropCoordinates) { diff --git a/src/com/android/launcher2/DragScroller.java b/src/com/android/launcher2/DragScroller.java index 6af9c3032..6ef4bd873 100644 --- a/src/com/android/launcher2/DragScroller.java +++ b/src/com/android/launcher2/DragScroller.java @@ -26,6 +26,7 @@ public interface DragScroller { /** * The touch point has entered the scroll area; a scroll is imminent. + * This event will only occur while a drag is active. * * @param direction The scroll direction */ @@ -33,6 +34,7 @@ public interface DragScroller { /** * The touch point has left the scroll area. + * NOTE: This may not be called, if a drop occurs inside the scroll area. */ void onExitScrollArea(); } -- cgit v1.2.3