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

Commit da858aab authored by Tony Wickham's avatar Tony Wickham Committed by Android (Google) Code Review
Browse files

Merge "Override displacement for transient taskbar instead of mCurrentShift" into tm-qpr-dev

parents ad932045 7a19ccca
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -825,7 +825,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
            return;
        }
        mLauncherTransitionController.setProgress(
                Math.max(getTaskbarProgress(), getScaleProgressDueToScroll()), mDragLengthFactor);
                Math.max(mCurrentShift.value, getScaleProgressDueToScroll()), mDragLengthFactor);
    }

    /**
@@ -2187,7 +2187,7 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
            AnimatorControllerWithResistance playbackController =
                    remoteHandle.getPlaybackController();
            if (playbackController != null) {
                playbackController.setProgress(Math.max(getTaskbarProgress(),
                playbackController.setProgress(Math.max(mCurrentShift.value,
                        getScaleProgressDueToScroll()), mDragLengthFactor);
            }

@@ -2239,31 +2239,32 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
    }

    /**
     * Overrides the current shift progress to keep the app window at the bottom of the screen
     * while the transient taskbar is being swiped in.
     * Overrides the gesture displacement to keep the app window at the bottom of the screen while
     * the transient taskbar is being swiped in.
     *
     * There is also a catch up period so that the window can start moving 1:1 with the swipe.
     */
    private float getTaskbarProgress() {
    @Override
    protected float overrideDisplacementForTransientTaskbar(float displacement) {
        if (!mIsTransientTaskbar) {
            return mCurrentShift.value;
            return displacement;
        }

        if (mTaskbarAlreadyOpen) {
            return mCurrentShift.value;
            return displacement;
        }

        if (mCurrentDisplacement < mTaskbarAppWindowThreshold) {
        if (displacement < mTaskbarAppWindowThreshold) {
            return 0;
        }

        // "Catch up" with `mCurrentShift.value`.
        if (mCurrentDisplacement < mTaskbarCatchUpThreshold) {
            return Utilities.mapToRange(mCurrentDisplacement, mTaskbarAppWindowThreshold,
                    mTaskbarCatchUpThreshold, 0, mCurrentShift.value, ACCEL_DEACCEL);
        // "Catch up" with the displacement at mTaskbarCatchUpThreshold.
        if (displacement < mTaskbarCatchUpThreshold) {
            return Utilities.mapToRange(displacement, mTaskbarAppWindowThreshold,
                    mTaskbarCatchUpThreshold, 0, mTaskbarCatchUpThreshold, ACCEL_DEACCEL);
        }

        return mCurrentShift.value;
        return displacement;
    }

    private void setDividerShown(boolean shown, boolean immediate) {
+12 −1
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ public abstract class SwipeUpAnimationLogic implements
    @UiThread
    public void updateDisplacement(float displacement) {
        // We are moving in the negative x/y direction
        displacement = -displacement;
        displacement = overrideDisplacementForTransientTaskbar(-displacement);
        mCurrentDisplacement = displacement;

        float shift;
@@ -130,6 +130,17 @@ public abstract class SwipeUpAnimationLogic implements
        mCurrentShift.updateValue(shift);
    }

    /**
     * When Transient Taskbar is enabled, subclasses can override the displacement to keep the app
     * window at the bottom of the screen while taskbar is being swiped in.
     * @param displacement The distance the user has swiped up from the bottom of the screen. This
     *                     value will be positive unless the user swipe downwards.
     * @return the overridden displacement.
     */
    protected float overrideDisplacementForTransientTaskbar(float displacement) {
        return displacement;
    }

    /**
     * Called when the value of {@link #mCurrentShift} changes
     */