Merge "Simplify trackpad multi-finger gesture recognition logic for gesture nav" into udc-qpr-dev

This commit is contained in:
Tracy Zhou
2023-05-30 16:38:16 +00:00
committed by Android (Google) Code Review
4 changed files with 12 additions and 22 deletions
@@ -113,7 +113,6 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
newCancelListener(this::clearState);
private boolean mNoIntercept;
private Boolean mIsTrackpadFourFingerSwipe;
private LauncherState mStartState;
private boolean mIsHomeScreenVisible = true;
@@ -139,9 +138,7 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
@Override
public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
int action = ev.getActionMasked();
if (action == ACTION_DOWN) {
mIsTrackpadFourFingerSwipe = null;
if (ev.getActionMasked() == ACTION_DOWN) {
mNoIntercept = !canInterceptTouch(ev);
if (mNoIntercept) {
return false;
@@ -150,13 +147,6 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
// Only detect horizontal swipe for intercept, then we will allow swipe up as well.
mSwipeDetector.setDetectableScrollConditions(DIRECTION_RIGHT,
false /* ignoreSlopWhenSettling */);
} else if (isTrackpadMultiFingerSwipe(ev) && mIsTrackpadFourFingerSwipe == null
&& action == ACTION_MOVE) {
mIsTrackpadFourFingerSwipe = isTrackpadFourFingerSwipe(ev);
mNoIntercept = !mIsTrackpadFourFingerSwipe;
if (mNoIntercept) {
return false;
}
}
if (mNoIntercept) {
@@ -191,6 +181,9 @@ public class NoButtonQuickSwitchTouchController implements TouchController,
// TODO(b/268075592): add support for quickswitch to/from desktop
return false;
}
if (isTrackpadMultiFingerSwipe(ev)) {
return isTrackpadFourFingerSwipe(ev);
}
return true;
}
@@ -150,15 +150,10 @@ public class GestureState implements RecentsAnimationCallbacks.RecentsAnimationL
public enum TrackpadGestureType {
NONE,
// Assigned before we know whether it's a 3-finger or 4-finger gesture.
MULTI_FINGER,
THREE_FINGER,
FOUR_FINGER;
public static TrackpadGestureType getTrackpadGestureType(MotionEvent event) {
if (!isTrackpadMultiFingerSwipe(event)) {
return TrackpadGestureType.NONE;
}
if (isTrackpadThreeFingerSwipe(event)) {
return TrackpadGestureType.THREE_FINGER;
}
@@ -166,7 +161,7 @@ public class GestureState implements RecentsAnimationCallbacks.RecentsAnimationL
return TrackpadGestureType.FOUR_FINGER;
}
return TrackpadGestureType.MULTI_FINGER;
return TrackpadGestureType.NONE;
}
}
@@ -741,9 +741,6 @@ public class TouchInteractionService extends Service
if (mGestureState.isTrackpadGesture() && (action == ACTION_POINTER_DOWN
|| action == ACTION_POINTER_UP)) {
// Skip ACTION_POINTER_DOWN and ACTION_POINTER_UP events from trackpad.
if (action == ACTION_POINTER_DOWN) {
mGestureState.setTrackpadGestureType(getTrackpadGestureType(event));
}
} else if (event.isHoverEvent()) {
mUncheckedConsumer.onHoverEvent(event);
} else {
@@ -30,6 +30,9 @@ public class MotionEventsUtils {
/** {@link MotionEvent#CLASSIFICATION_MULTI_FINGER_SWIPE} is hidden. */
public static final int CLASSIFICATION_MULTI_FINGER_SWIPE = 4;
/** {@link MotionEvent#AXIS_GESTURE_SWIPE_FINGER_COUNT} is hidden. */
private static final int AXIS_GESTURE_SWIPE_FINGER_COUNT = 53;
@TargetApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
public static boolean isTrackpadScroll(MotionEvent event) {
return ENABLE_TRACKPAD_GESTURE.get()
@@ -43,11 +46,13 @@ public class MotionEventsUtils {
}
public static boolean isTrackpadThreeFingerSwipe(MotionEvent event) {
return isTrackpadMultiFingerSwipe(event) && event.getPointerCount() == 3;
return isTrackpadMultiFingerSwipe(event) && event.getAxisValue(
AXIS_GESTURE_SWIPE_FINGER_COUNT) == 3;
}
public static boolean isTrackpadFourFingerSwipe(MotionEvent event) {
return isTrackpadMultiFingerSwipe(event) && event.getPointerCount() == 4;
return isTrackpadMultiFingerSwipe(event) && event.getAxisValue(
AXIS_GESTURE_SWIPE_FINGER_COUNT) == 4;
}
public static boolean isTrackpadMotionEvent(MotionEvent event) {