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
This commit is contained in:
Tony Wickham
2022-11-19 02:32:40 +00:00
parent 7b516983bc
commit 9cddf4133b
2 changed files with 12 additions and 40 deletions
@@ -292,7 +292,6 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
private boolean mWasLauncherAlreadyVisible;
private boolean mPassedOverviewThreshold;
private boolean mGestureStarted;
private boolean mLogDirectionUpOrLeft = true;
private PointF mDownPos;
@@ -319,8 +318,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
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<T extends StatefulActivity<S>,
@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<T extends StatefulActivity<S>,
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<T extends StatefulActivity<S>,
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<T extends StatefulActivity<S>,
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<T extends StatefulActivity<S>,
}
/**
* 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