diff options
author | 2016-01-29 15:23:16 +0000 | |
---|---|---|
committer | 2016-01-29 15:23:16 +0000 | |
commit | 8ab1a37b767113357e77787d5fe2ba423d16ae3a (patch) | |
tree | 0322ab3ae463c5ebb1248c81a8cdebae301e574f | |
parent | 649a401101f88238201e8cf0b8cae3c2448addef (diff) | |
parent | 66df60fbb6fff711c35b73dac75da45a85a057f8 (diff) |
Merge "Consume AbsListView touch events following a successful long-press"
-rw-r--r-- | core/java/android/widget/AbsListView.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index df8497070b8a..7b6fa6dab075 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -565,6 +565,12 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private Runnable mTouchModeReset; /** + * Whether the most recent touch event stream resulted in a successful + * long-press action. This is reset on TOUCH_DOWN. + */ + private boolean mHasPerformedLongPress; + + /** * This view is in transcript mode -- it shows the bottom of the list when the data * changes */ @@ -3108,7 +3114,9 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te handled = performLongPress(child, longPressPosition, longPressId); } } + if (handled) { + mHasPerformedLongPress = true; mTouchMode = TOUCH_MODE_REST; setPressed(false); child.setPressed(false); @@ -3811,6 +3819,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } private void onTouchDown(MotionEvent ev) { + mHasPerformedLongPress = false; mActivePointerId = ev.getPointerId(0); if (mTouchMode == TOUCH_MODE_OVERFLING) { @@ -3874,6 +3883,11 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te } private void onTouchMove(MotionEvent ev, MotionEvent vtev) { + if (mHasPerformedLongPress) { + // Consume all move events following a successful long press. + return; + } + int pointerIndex = ev.findPointerIndex(mActivePointerId); if (pointerIndex == -1) { pointerIndex = 0; |