From 9cddf4133befc721f2eb6a374b40fbb1b74f64ef Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Sat, 19 Nov 2022 02:32:40 +0000 Subject: [PATCH] Cleanup overview threshold which was only needed for 2-button mode - Removed hasReachedOverviewThreshold() and mPassedOverviewThreshold - Changed calculateEndTargetForNonFling() to check velocity.y to determine whether to go HOME or LAST_TASK when no other conditions are met (e.g. mIsMotionPaused still goes to RECENTS). To allow transient taskbar to override this so that user stays in LAST_TASK when invoking the taskbar, kept setHasReachedHomeOverviewThreshold() but renamed it to setCanSlowSwipeGoHome(), Test: TaplTestsQuickstep, manually tested on tablet and phone to ensure the correct end target was chosen when hitting this code path in calculateEndTargetForNonFling Flag: teamfood (ENABLE_TRANSIENT_TASKBAR) Fixes: 259715295 Change-Id: I925be3433d7d2792cdc2a75a18dc575019f2cc95 --- .../android/quickstep/AbsSwipeUpHandler.java | 50 ++++--------------- .../OtherActivityInputConsumer.java | 2 +- 2 files changed, 12 insertions(+), 40 deletions(-) diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index 4bbbe6069d..b65d4089f8 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -292,7 +292,6 @@ public abstract class AbsSwipeUpHandler, private boolean mWasLauncherAlreadyVisible; - private boolean mPassedOverviewThreshold; private boolean mGestureStarted; private boolean mLogDirectionUpOrLeft = true; private PointF mDownPos; @@ -319,8 +318,8 @@ public abstract class AbsSwipeUpHandler, private final int mTaskbarCatchUpThreshold; private boolean mTaskbarAlreadyOpen; private final boolean mIsTransientTaskbar; - // Only used when mIsTransientTaskbar is true. - private boolean mHasReachedHomeOverviewThreshold; + // May be set to false when mIsTransientTaskbar is true. + private boolean mCanSlowSwipeGoHome = true; public AbsSwipeUpHandler(Context context, RecentsAnimationDeviceState deviceState, TaskAnimationManager taskAnimationManager, GestureState gestureState, @@ -824,14 +823,6 @@ public abstract class AbsSwipeUpHandler, @UiThread @Override public void updateFinalShift() { - final boolean passed = hasReachedHomeOverviewThreshold(); - if (passed != mPassedOverviewThreshold) { - mPassedOverviewThreshold = passed; - if (mDeviceState.isTwoButtonNavMode() && !mGestureState.isHandlingAtomicEvent()) { - performHapticFeedback(); - } - } - updateSysUiFlags(mCurrentShift.value); applyScrollAndTransform(); @@ -916,8 +907,6 @@ public abstract class AbsSwipeUpHandler, mStateCallback.runOnceAtState(STATE_APP_CONTROLLER_RECEIVED | STATE_GESTURE_STARTED, this::startInterceptingTouchesForGesture); mStateCallback.setStateOnUiThread(STATE_APP_CONTROLLER_RECEIVED); - - mPassedOverviewThreshold = false; } @Override @@ -1149,20 +1138,11 @@ public abstract class AbsSwipeUpHandler, return willGoToNewTask || isCenteredOnNewTask ? NEW_TASK : LAST_TASK; } - if (!mDeviceState.isFullyGesturalNavMode()) { - return (!hasReachedHomeOverviewThreshold() && willGoToNewTask) ? NEW_TASK : RECENTS; - } return willGoToNewTask ? NEW_TASK : HOME; } private GestureEndTarget calculateEndTargetForNonFling(PointF velocity) { final boolean isScrollingToNewTask = isScrollingToNewTask(); - final boolean reachedHomeOverviewThreshold = hasReachedHomeOverviewThreshold(); - if (!mDeviceState.isFullyGesturalNavMode()) { - return reachedHomeOverviewThreshold && mGestureStarted - ? RECENTS - : (isScrollingToNewTask ? NEW_TASK : LAST_TASK); - } // Fully gestural mode. final boolean isFlingX = Math.abs(velocity.x) > mContext.getResources() @@ -1175,10 +1155,8 @@ public abstract class AbsSwipeUpHandler, return RECENTS; } else if (isScrollingToNewTask) { return NEW_TASK; - } else if (reachedHomeOverviewThreshold) { - return HOME; } - return LAST_TASK; + return velocity.y < 0 && mCanSlowSwipeGoHome ? HOME : LAST_TASK; } private boolean isScrollingToNewTask() { @@ -1195,21 +1173,15 @@ public abstract class AbsSwipeUpHandler, } /** - * Sets whether the current swipe has reached the threshold where if user lets go they would - * go to either the home state or overview state. + * Sets whether a slow swipe can go to the HOME end target when the user lets go. A slow swipe + * for this purpose must meet two criteria: + * 1) y-velocity is less than quickstep_fling_threshold_speed + * AND + * 2) motion pause has not been detected (possibly because + * {@link MotionPauseDetector#setDisallowPause} has been called with disallowPause == true) */ - public void setHasReachedHomeOverviewThreshold(boolean hasReachedHomeOverviewThreshold) { - mHasReachedHomeOverviewThreshold = hasReachedHomeOverviewThreshold; - } - - /** - * Returns true iff swipe has reached the overview threshold. - */ - public boolean hasReachedHomeOverviewThreshold() { - if (mIsTransientTaskbar) { - return mHasReachedHomeOverviewThreshold; - } - return mCurrentShift.value > MIN_PROGRESS_FOR_OVERVIEW; + public void setCanSlowSwipeGoHome(boolean canSlowSwipeGoHome) { + mCanSlowSwipeGoHome = canSlowSwipeGoHome; } @UiThread diff --git a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java index 503644a606..4d005b2655 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java @@ -340,8 +340,8 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC boolean minSwipeMet = upDist >= mMotionPauseMinDisplacement; if (mIsTransientTaskbar) { minSwipeMet = upDist >= mTaskbarHomeOverviewThreshold; - mInteractionHandler.setHasReachedHomeOverviewThreshold(minSwipeMet); } + mInteractionHandler.setCanSlowSwipeGoHome(minSwipeMet); mMotionPauseDetector.setDisallowPause(!minSwipeMet || isLikelyToStartNewTask); mMotionPauseDetector.addPosition(ev);