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

Commit a6b29968 authored by Tony Wickham's avatar Tony Wickham
Browse files

Unstash taskbar due to IME immediately when system gesture starts

This is reversing a previous change from a few years ago
(ag/16325264) because we now clip the recent apps on the bottom
during gesture nav, whereas before we left them unclipped until
you swiped up.

Flag: none
Fixes: 305977350
Test: verified visuals manually in persistent, transient, and 3
button nav; also tested interactions with All Apps

Change-Id: Ib3823a9bd9aebf923ad481c010c7e8544bcb6a4d
parent 8944afda
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -890,17 +890,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
    }

    /**
     * Should be called when a system gesture starts and settles, so we can defer updating
     * FLAG_STASHED_IN_APP_IME until after the gesture transition completes.
     * Should be called when a system gesture starts and settles, so we can remove
     * FLAG_STASHED_IN_APP_IME while the gesture is in progress.
     */
    public void setSystemGestureInProgress(boolean inProgress) {
        mIsSystemGestureInProgress = inProgress;
        if (mIsSystemGestureInProgress) {
            return;
        }

        // Only update the following flags when system gesture is not in progress.
        updateStateForFlag(FLAG_STASHED_IN_TASKBAR_ALL_APPS, false);
        setStashedImeState();
    }

@@ -952,12 +946,9 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
                && !hasAnyFlag(systemUiStateFlags, SYSUI_STATE_STATUS_BAR_KEYGUARD_GOING_AWAY);
        updateStateForFlag(FLAG_STASHED_DEVICE_LOCKED, isLocked);

        // Only update FLAG_STASHED_IN_APP_IME when system gesture is not in progress.
        mIsImeShowing = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_IME_SHOWING);
        mIsImeSwitcherShowing = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_IME_SWITCHER_SHOWING);

        if (!mIsSystemGestureInProgress) {
            updateStateForFlag(FLAG_STASHED_IN_APP_IME, shouldStashForIme());
        if (updateStateForFlag(FLAG_STASHED_IN_APP_IME, shouldStashForIme())) {
            animDuration = TASKBAR_STASH_DURATION_FOR_IME;
            startDelay = getTaskbarStashStartDelayForIme();
        }
@@ -970,7 +961,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
     *
     * <p>Do not stash if in small screen, with 3 button nav, and in landscape (or seascape).
     * <p>Do not stash if taskbar is transient.
     * <p>Do not stash if hardware keyboard is attached and taskbar is pinned and IME is docked
     * <p>Do not stash if hardware keyboard is attached and taskbar is pinned and IME is docked.
     * <p>Do not stash if a system gesture is started.
     */
    private boolean shouldStashForIme() {
        if (DisplayController.isTransientTaskbar(mActivity)) {
@@ -996,6 +988,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
            return false;
        }

        // Do not stash if a gesture started.
        if (mIsSystemGestureInProgress) {
            return false;
        }

        return mIsImeShowing || mIsImeSwitcherShowing;
    }

@@ -1007,13 +1004,16 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
     * @param flag    The flag to update.
     * @param enabled Whether to enable the flag: True will cause the task bar to be stashed /
     *                unstashed.
     * @return Whether the flag state changed.
     */
    public void updateStateForFlag(int flag, boolean enabled) {
    public boolean updateStateForFlag(int flag, boolean enabled) {
        int oldState = mState;
        if (enabled) {
            mState |= flag;
        } else {
            mState &= ~flag;
        }
        return mState != oldState;
    }

    /**