diff options
4 files changed, 38 insertions, 41 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java index b1719107fae1..91171d880754 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java @@ -23,7 +23,6 @@ import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_EXCLUDE_FROM_ import static com.android.systemui.Flags.edgebackGestureHandlerGetRunningTasksBackground; import static com.android.systemui.classifier.Classifier.BACK_GESTURE; -import static com.android.systemui.navigationbar.gestural.Utilities.isTrackpadScroll; import static com.android.systemui.navigationbar.gestural.Utilities.isTrackpadThreeFingerSwipe; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TOUCHPAD_GESTURES_DISABLED; @@ -1087,8 +1086,7 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack boolean isBackAllowedCommon = !mDisabledForQuickstep && mIsBackGestureAllowed && !mGestureBlockingActivityRunning.get() && !QuickStepContract.isBackGestureDisabled(mSysUiFlags, - mIsTrackpadThreeFingerSwipe) - && !isTrackpadScroll(ev); + mIsTrackpadThreeFingerSwipe); if (mIsTrackpadThreeFingerSwipe) { // Trackpad back gestures don't have zones, so we don't need to check if the down // event is within insets. diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/Utilities.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/Utilities.java index b46f2d2f5d62..1771a974d4fb 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/Utilities.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/Utilities.java @@ -18,16 +18,11 @@ package com.android.systemui.navigationbar.gestural; import static android.view.MotionEvent.AXIS_GESTURE_SWIPE_FINGER_COUNT; import static android.view.MotionEvent.CLASSIFICATION_MULTI_FINGER_SWIPE; -import static android.view.MotionEvent.CLASSIFICATION_TWO_FINGER_SWIPE; import android.view.MotionEvent; public final class Utilities { - public static boolean isTrackpadScroll(MotionEvent event) { - return event.getClassification() == CLASSIFICATION_TWO_FINGER_SWIPE; - } - public static boolean isTrackpadThreeFingerSwipe(MotionEvent event) { return event.getClassification() == CLASSIFICATION_MULTI_FINGER_SWIPE && event.getAxisValue(AXIS_GESTURE_SWIPE_FINGER_COUNT) == 3; diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index 88522d559c30..cfdc83fef896 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -35,7 +35,6 @@ import static com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING; import static com.android.systemui.keyguard.shared.model.KeyguardState.GONE; import static com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN; import static com.android.systemui.keyguard.shared.model.KeyguardState.OCCLUDED; -import static com.android.systemui.navigationbar.gestural.Utilities.isTrackpadScroll; import static com.android.systemui.navigationbar.gestural.Utilities.isTrackpadThreeFingerSwipe; import static com.android.systemui.shade.ShadeExpansionStateManagerKt.STATE_CLOSED; import static com.android.systemui.shade.ShadeExpansionStateManagerKt.STATE_OPEN; @@ -73,6 +72,7 @@ import android.util.IndentingPrintWriter; import android.util.Log; import android.util.MathUtils; import android.view.HapticFeedbackConstants; +import android.view.InputDevice; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.VelocityTracker; @@ -186,7 +186,6 @@ import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.notification.AnimatableProperty; import com.android.systemui.statusbar.notification.ConversationNotificationManager; import com.android.systemui.statusbar.notification.DynamicPrivacyController; -import com.android.systemui.statusbar.notification.headsup.HeadsUpTouchHelper; import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator; import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.ViewGroupFadeHelper; @@ -194,6 +193,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.domain.interactor.ActiveNotificationsInteractor; import com.android.systemui.statusbar.notification.footer.shared.FooterViewRefactor; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; +import com.android.systemui.statusbar.notification.headsup.HeadsUpTouchHelper; import com.android.systemui.statusbar.notification.headsup.OnHeadsUpChangedListener; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.ExpandableView; @@ -414,7 +414,6 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump private float mOverStretchAmount; private float mDownX; private float mDownY; - private boolean mIsTrackpadReverseScroll; private int mDisplayTopInset = 0; // in pixels private int mDisplayRightInset = 0; // in pixels private int mDisplayLeftInset = 0; // in pixels @@ -3759,7 +3758,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump */ private boolean isDirectionUpwards(float x, float y) { float xDiff = x - mInitialExpandX; - float yDiff = (mIsTrackpadReverseScroll ? -1 : 1) * (y - mInitialExpandY); + float yDiff = y - mInitialExpandY; if (yDiff >= 0) { return false; } @@ -3797,7 +3796,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump || (!isFullyExpanded() && !isFullyCollapsed()) || event.getActionMasked() == MotionEvent.ACTION_CANCEL || forceCancel) { mVelocityTracker.computeCurrentVelocity(1000); - float vel = (mIsTrackpadReverseScroll ? -1 : 1) * mVelocityTracker.getYVelocity(); + float vel = mVelocityTracker.getYVelocity(); float vectorVel = (float) Math.hypot( mVelocityTracker.getXVelocity(), mVelocityTracker.getYVelocity()); @@ -3836,7 +3835,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump mLockscreenGestureLogger.write(MetricsEvent.ACTION_LS_UNLOCK, heightDp, velocityDp); mLockscreenGestureLogger.log(LockscreenUiEvent.LOCKSCREEN_UNLOCK); } - float dy = (mIsTrackpadReverseScroll ? -1 : 1) * (y - mInitialExpandY); + float dy = y - mInitialExpandY; @Classifier.InteractionType int interactionType = vel == 0 ? GENERIC : dy > 0 ? QUICK_SETTINGS : (mKeyguardStateController.canDismissLockScreen() @@ -3865,7 +3864,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump private float getCurrentExpandVelocity() { mVelocityTracker.computeCurrentVelocity(1000); - return (mIsTrackpadReverseScroll ? -1 : 1) * mVelocityTracker.getYVelocity(); + return mVelocityTracker.getYVelocity(); } private void endClosing() { @@ -4924,8 +4923,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump final float x = event.getX(pointerIndex); final float y = event.getY(pointerIndex); boolean canCollapsePanel = canCollapsePanelOnTouch(); - final boolean isTrackpadTwoOrThreeFingerSwipe = isTrackpadScroll(event) - || isTrackpadThreeFingerSwipe(event); + final boolean isTrackpadThreeFingerSwipe = isTrackpadThreeFingerSwipe(event); switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: @@ -4943,9 +4941,6 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump return true; } - mIsTrackpadReverseScroll = - !mNaturalScrollingSettingObserver.isNaturalScrollingEnabled() - && isTrackpadScroll(event); if (!isTracking() || isFullyCollapsed()) { mInitialExpandY = y; mInitialExpandX = x; @@ -4965,7 +4960,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump addMovement(event); break; case MotionEvent.ACTION_POINTER_UP: - if (isTrackpadTwoOrThreeFingerSwipe) { + if (isTrackpadThreeFingerSwipe) { break; } final int upPointer = event.getPointerId(event.getActionIndex()); @@ -4981,14 +4976,14 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump mShadeLog.logMotionEventStatusBarState(event, mStatusBarStateController.getState(), "onInterceptTouchEvent: pointer down action"); - if (!isTrackpadTwoOrThreeFingerSwipe + if (!isTrackpadThreeFingerSwipe && mStatusBarStateController.getState() == StatusBarState.KEYGUARD) { mMotionAborted = true; mVelocityTracker.clear(); } break; case MotionEvent.ACTION_MOVE: - final float h = (mIsTrackpadReverseScroll ? -1 : 1) * (y - mInitialExpandY); + final float h = y - mInitialExpandY; addMovement(event); final boolean openShadeWithoutHun = mPanelClosedOnDown && !mCollapsedAndHeadsUpOnDown; @@ -5168,14 +5163,22 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump final float x = event.getX(pointerIndex); final float y = event.getY(pointerIndex); - if (event.getActionMasked() == MotionEvent.ACTION_DOWN + boolean isDown = event.getActionMasked() == MotionEvent.ACTION_DOWN; + if (isDown || event.getActionMasked() == MotionEvent.ACTION_MOVE) { mGestureWaitForTouchSlop = shouldGestureWaitForTouchSlop(); mIgnoreXTouchSlop = true; } - final boolean isTrackpadTwoOrThreeFingerSwipe = isTrackpadScroll(event) - || isTrackpadThreeFingerSwipe(event); + final boolean isTrackpadThreeFingerSwipe = isTrackpadThreeFingerSwipe(event); + if (com.android.systemui.Flags.disableShadeExpandsOnTrackpadTwoFingerSwipe() + && !isTrackpadThreeFingerSwipe && isTwoFingerSwipeTrackpadEvent(event) + && !isPanelExpanded()) { + if (isDown) { + mShadeLog.d("ignoring down event for two finger trackpad swipe"); + } + return false; + } switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: @@ -5213,7 +5216,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump break; case MotionEvent.ACTION_POINTER_UP: - if (isTrackpadTwoOrThreeFingerSwipe) { + if (isTrackpadThreeFingerSwipe) { break; } final int upPointer = event.getPointerId(event.getActionIndex()); @@ -5232,7 +5235,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump mShadeLog.logMotionEventStatusBarState(event, mStatusBarStateController.getState(), "handleTouch: pointer down action"); - if (!isTrackpadTwoOrThreeFingerSwipe + if (!isTrackpadThreeFingerSwipe && mStatusBarStateController.getState() == StatusBarState.KEYGUARD) { mMotionAborted = true; endMotionEvent(event, x, y, true /* forceCancel */); @@ -5255,7 +5258,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump if (!isFullyCollapsed()) { maybeVibrateOnOpening(true /* openingWithTouch */); } - float h = (mIsTrackpadReverseScroll ? -1 : 1) * (y - mInitialExpandY); + float h = y - mInitialExpandY; // If the panel was collapsed when touching, we only need to check for the // y-component of the gesture, as we have no conflicting horizontal gesture. @@ -5265,7 +5268,9 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump mTouchSlopExceeded = true; if (mGestureWaitForTouchSlop && !isTracking() - && !mCollapsedAndHeadsUpOnDown) { + && !mCollapsedAndHeadsUpOnDown + && !isTwoFingerSwipeTrackpadEvent(event) + ) { if (mInitialOffsetOnTouch != 0f) { startExpandMotion(x, y, false /* startTracking */, mExpandedHeight); h = 0; @@ -5304,13 +5309,19 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump mQsController.cancelJankMonitoring(); } } - mIsTrackpadReverseScroll = false; break; } return !mGestureWaitForTouchSlop || isTracking(); } } + private static boolean isTwoFingerSwipeTrackpadEvent(MotionEvent event) { + //SOURCE_MOUSE because SOURCE_TOUCHPAD is reserved for "captured" touchpads + return event.getSource() == InputDevice.SOURCE_MOUSE + && event.getToolType(0) == MotionEvent.TOOL_TYPE_FINGER + && event.getClassification() == MotionEvent.CLASSIFICATION_TWO_FINGER_SWIPE; + } + private final class HeadsUpNotificationViewControllerImpl implements HeadsUpTouchHelper.HeadsUpNotificationViewController { @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt index 1ec5357d0d30..ba41a631a2c6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt @@ -22,7 +22,6 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.keyguard.WakefulnessLifecycle import com.android.systemui.keyguard.domain.interactor.NaturalScrollingSettingObserver import com.android.systemui.media.controls.ui.controller.MediaHierarchyManager -import com.android.systemui.navigationbar.gestural.Utilities.isTrackpadScroll import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.ActivityStarter.OnDismissAction import com.android.systemui.plugins.FalsingManager @@ -760,7 +759,6 @@ class DragDownHelper( private var draggedFarEnough = false private var startingChild: ExpandableView? = null private var lastHeight = 0f - private var isTrackpadReverseScroll = false var isDraggingDown = false private set @@ -798,12 +796,9 @@ class DragDownHelper( startingChild = null initialTouchY = y initialTouchX = x - isTrackpadReverseScroll = - !naturalScrollingSettingObserver.isNaturalScrollingEnabled && - isTrackpadScroll(event) } MotionEvent.ACTION_MOVE -> { - val h = (if (isTrackpadReverseScroll) -1 else 1) * (y - initialTouchY) + val h = y - initialTouchY // Adjust the touch slop if another gesture may be being performed. val touchSlop = if (event.classification == MotionEvent.CLASSIFICATION_AMBIGUOUS_GESTURE) { @@ -837,7 +832,7 @@ class DragDownHelper( val y = event.y when (event.actionMasked) { MotionEvent.ACTION_MOVE -> { - lastHeight = (if (isTrackpadReverseScroll) -1 else 1) * (y - initialTouchY) + lastHeight = y - initialTouchY captureStartingChild(initialTouchX, initialTouchY) dragDownCallback.dragDownAmount = lastHeight + dragDownAmountOnStart if (startingChild != null) { @@ -862,14 +857,13 @@ class DragDownHelper( !isFalseTouch && dragDownCallback.canDragDown() ) { - val dragDown = (if (isTrackpadReverseScroll) -1 else 1) * (y - initialTouchY) + val dragDown = y - initialTouchY dragDownCallback.onDraggedDown(startingChild, dragDown.toInt()) if (startingChild != null) { expandCallback.setUserLockedChild(startingChild, false) startingChild = null } isDraggingDown = false - isTrackpadReverseScroll = false shadeRepository.setLegacyLockscreenShadeTracking(false) return true } else { @@ -950,7 +944,6 @@ class DragDownHelper( startingChild = null } isDraggingDown = false - isTrackpadReverseScroll = false shadeRepository.setLegacyLockscreenShadeTracking(false) dragDownCallback.onDragDownReset() } |