summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alan Viverette <alanv@google.com> 2016-01-29 15:23:16 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-01-29 15:23:16 +0000
commit8ab1a37b767113357e77787d5fe2ba423d16ae3a (patch)
tree0322ab3ae463c5ebb1248c81a8cdebae301e574f
parent649a401101f88238201e8cf0b8cae3c2448addef (diff)
parent66df60fbb6fff711c35b73dac75da45a85a057f8 (diff)
Merge "Consume AbsListView touch events following a successful long-press"
-rw-r--r--core/java/android/widget/AbsListView.java14
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;