Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9cddf413 authored by Tony Wickham's avatar Tony Wickham
Browse files

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
parent 7b516983
Loading
Loading
Loading
Loading
+11 −39
Original line number Diff line number Diff line
@@ -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.
     */
    public void setHasReachedHomeOverviewThreshold(boolean hasReachedHomeOverviewThreshold) {
        mHasReachedHomeOverviewThreshold = hasReachedHomeOverviewThreshold;
    }

    /**
     * Returns true iff swipe has reached the overview threshold.
     * 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 boolean hasReachedHomeOverviewThreshold() {
        if (mIsTransientTaskbar) {
            return mHasReachedHomeOverviewThreshold;
        }
        return mCurrentShift.value > MIN_PROGRESS_FOR_OVERVIEW;
    public void setCanSlowSwipeGoHome(boolean canSlowSwipeGoHome) {
        mCanSlowSwipeGoHome = canSlowSwipeGoHome;
    }

    @UiThread
+1 −1
Original line number Diff line number Diff line
@@ -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);