Merge "Fix edge swipe logic."

This commit is contained in:
Ameer Armaly
2020-08-19 00:48:38 +00:00
committed by Android (Google) Code Review

View File

@@ -561,24 +561,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);
}
}
}
}
/**
@@ -644,12 +626,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;
}
}