summaryrefslogtreecommitdiff
path: root/services/accessibility
diff options
context:
space:
mode:
authorAmeer Armaly <aarmaly@google.com>2020-08-11 17:27:02 -0700
committerAmeer Armaly <aarmaly@google.com>2020-10-11 08:04:43 -0700
commit217bb3b1d2182d83101337cff0930d2696254699 (patch)
tree3f2a6ee41fadc7636a2cc4101fa12b4685111b93 /services/accessibility
parenta7da0f4f6d9a0c5e7959831867ddc5c3bd1baf43 (diff)
[DO NOT MERGE] Fix edge swipe logic.
1) Only start delegating upon first move event, if all three fingers went down on the bottom edge. 2) The previous logic only required one finger to be in the edge boundary. It now requires all fingers to be in the edge boundary. Bug: 162521649 Test: manual Change-Id: I829c463c63b384642d129ff3b5ccdb0db816ddcd
Diffstat (limited to 'services/accessibility')
-rw-r--r--services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java50
1 files changed, 27 insertions, 23 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 5509b3fdaa1b..a13f59c2e549 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
@@ -539,24 +539,6 @@ public class TouchExplorer extends BaseEventStreamTransformation
// stream consistent.
sendHoverExitAndTouchExplorationGestureEndIfNeeded(policyFlags);
}
- if (mGestureDetector.isMultiFingerGesturesEnabled()
- && mGestureDetector.isTwoFingerPassthroughEnabled()) {
- if (event.getPointerCount() == 3) {
- boolean isOnBottomEdge = false;
- // If three fingers go 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 = true;
- }
- }
- if (isOnBottomEdge) {
- mState.startDelegating();
- mDispatcher.sendDownForAllNotInjectedPointers(event, policyFlags);
- }
- }
- }
}
/**
@@ -638,12 +620,34 @@ public class TouchExplorer extends BaseEventStreamTransformation
break;
default:
if (mGestureDetector.isMultiFingerGesturesEnabled()) {
- return;
+ 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 (DEBUG) {
+ Slog.d(LOG_TAG, "Three-finger edge swipe detected.");
+ }
+ mState.startDelegating();
+ mDispatcher.sendDownForAllNotInjectedPointers(event, policyFlags);
+ }
+ }
+ }
+ } else {
+ // More than two pointers are delegated to the view hierarchy.
+ mState.startDelegating();
+ event = MotionEvent.obtainNoHistory(event);
+ mDispatcher.sendDownForAllNotInjectedPointers(event, policyFlags);
}
- // More than two pointers are delegated to the view hierarchy.
- mState.startDelegating();
- event = MotionEvent.obtainNoHistory(event);
- mDispatcher.sendDownForAllNotInjectedPointers(event, policyFlags);
break;
}
}