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
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 4bbbe60..b65d408 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -292,7 +292,6 @@
private boolean mWasLauncherAlreadyVisible;
- private boolean mPassedOverviewThreshold;
private boolean mGestureStarted;
private boolean mLogDirectionUpOrLeft = true;
private PointF mDownPos;
@@ -319,8 +318,8 @@
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 @@
@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 @@
mStateCallback.runOnceAtState(STATE_APP_CONTROLLER_RECEIVED | STATE_GESTURE_STARTED,
this::startInterceptingTouchesForGesture);
mStateCallback.setStateOnUiThread(STATE_APP_CONTROLLER_RECEIVED);
-
- mPassedOverviewThreshold = false;
}
@Override
@@ -1149,20 +1138,11 @@
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 @@
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 @@
}
/**
- * 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 503644a..4d005b2 100644
--- a/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java
+++ b/quickstep/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java
@@ -340,8 +340,8 @@
boolean minSwipeMet = upDist >= mMotionPauseMinDisplacement;
if (mIsTransientTaskbar) {
minSwipeMet = upDist >= mTaskbarHomeOverviewThreshold;
- mInteractionHandler.setHasReachedHomeOverviewThreshold(minSwipeMet);
}
+ mInteractionHandler.setCanSlowSwipeGoHome(minSwipeMet);
mMotionPauseDetector.setDisallowPause(!minSwipeMet
|| isLikelyToStartNewTask);
mMotionPauseDetector.addPosition(ev);