summaryrefslogtreecommitdiff
path: root/services/accessibility
diff options
context:
space:
mode:
authorAmeer Armaly <aarmaly@google.com>2020-08-18 18:09:42 -0700
committerAmeer Armaly <aarmaly@google.com>2020-10-11 08:04:42 -0700
commita7da0f4f6d9a0c5e7959831867ddc5c3bd1baf43 (patch)
treede98c325fcb17bf1913c557900443118cb07cde3 /services/accessibility
parentaa25d2041fd1e53058f8a6342172231de3822f79 (diff)
[DO NOT MERGE] Require both fingers to move before starting two-finger passthrough.
Bug: 162521649 Test: manual Change-Id: Ia6b7bf84fd0c7777f21afbd0e0c09bf3f4a10fb2
Diffstat (limited to 'services/accessibility')
-rw-r--r--services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java26
1 files changed, 17 insertions, 9 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
index 90806969816e..5509b3fdaa1b 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
@@ -590,15 +590,23 @@ public class TouchExplorer extends BaseEventStreamTransformation
if (pointerIndex < 0) {
return;
}
- final float deltaX =
- mReceivedPointerTracker.getReceivedPointerDownX(pointerId)
- - rawEvent.getX(pointerIndex);
- final float deltaY =
- mReceivedPointerTracker.getReceivedPointerDownY(pointerId)
- - rawEvent.getY(pointerIndex);
- final double moveDelta = Math.hypot(deltaX, deltaY);
- if (moveDelta < mTouchSlop) {
- return;
+ // Require both fingers to have moved a certain amount before starting a drag.
+ for (int index = 0; index < event.getPointerCount(); ++index) {
+ int id = event.getPointerId(index);
+ if (!mReceivedPointerTracker.isReceivedPointerDown(id)) {
+ // Something is wrong with the event stream.
+ Slog.e(LOG_TAG, "Invalid pointer id: " + id);
+ }
+ final float deltaX =
+ mReceivedPointerTracker.getReceivedPointerDownX(id)
+ - rawEvent.getX(index);
+ final float deltaY =
+ mReceivedPointerTracker.getReceivedPointerDownY(id)
+ - rawEvent.getY(index);
+ final double moveDelta = Math.hypot(deltaX, deltaY);
+ if (moveDelta < mTouchSlop) {
+ return;
+ }
}
}
// More than one pointer so the user is not touch exploring