diff options
author | ryanlwlin <ryanlwlin@google.com> | 2020-08-20 09:53:58 +0800 |
---|---|---|
committer | Ameer Armaly <aarmaly@google.com> | 2020-10-11 08:04:43 -0700 |
commit | dd8ef30adfc6e47b6d48c2aa558c1a793ce8eab9 (patch) | |
tree | 5f5506a6dcfd6037fb255c671190856890a289e2 /services/accessibility | |
parent | 217bb3b1d2182d83101337cff0930d2696254699 (diff) |
[DO NOT MERGE] Fix hardly to perform 3-finger swipe from the bottom
We accidentky checked invalid pointers down position.
In stead of checking all pointers, we check the pointer ids
from the motion event.
Bug: 165576902
Test: manually test
atest TouchExplorerTest
Change-Id: Id530bf4b760351215726b2afd781433b590f57ce
Diffstat (limited to 'services/accessibility')
-rw-r--r-- | services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java | 27 |
1 files changed, 17 insertions, 10 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 a13f59c2e549..abde43076c4e 100644 --- a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java +++ b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java @@ -622,18 +622,9 @@ public class TouchExplorer extends BaseEventStreamTransformation if (mGestureDetector.isMultiFingerGesturesEnabled()) { if (mGestureDetector.isTwoFingerPassthroughEnabled()) { if (event.getPointerCount() == 3) { - boolean isOnBottomEdge = true; // If three fingers went down on the bottom edge of the screen, delegate // immediately. - final long screenHeight = - mContext.getResources().getDisplayMetrics().heightPixels; - for (int i = 0; i < TouchState.MAX_POINTER_COUNT; ++i) { - if (mReceivedPointerTracker.getReceivedPointerDownY(i) - < (screenHeight - mEdgeSwipeHeightPixels)) { - isOnBottomEdge = false; - } - } - if (isOnBottomEdge) { + if (allPointersDownOnBottomEdge(event)) { if (DEBUG) { Slog.d(LOG_TAG, "Three-finger edge swipe detected."); } @@ -1050,6 +1041,22 @@ public class TouchExplorer extends BaseEventStreamTransformation return downEvent; } + private boolean allPointersDownOnBottomEdge(MotionEvent event) { + final long screenHeight = + mContext.getResources().getDisplayMetrics().heightPixels; + for (int i = 0; i < event.getPointerCount(); ++i) { + final int pointerId = event.getPointerId(i); + final float pointerDownY = mReceivedPointerTracker.getReceivedPointerDownY(pointerId); + if (pointerDownY < (screenHeight - mEdgeSwipeHeightPixels)) { + if (DEBUG) { + Slog.d(LOG_TAG, "The pointer is not on the bottom edge" + pointerDownY); + } + return false; + } + } + return true; + } + public TouchState getState() { return mState; } |