diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index ba8a0741a7..7e74c27264 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -891,17 +891,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(); } @@ -953,12 +947,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(); } @@ -971,7 +962,8 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * *
Do not stash if in small screen, with 3 button nav, and in landscape (or seascape). *
Do not stash if taskbar is transient. - *
Do not stash if hardware keyboard is attached and taskbar is pinned and IME is docked + *
Do not stash if hardware keyboard is attached and taskbar is pinned and IME is docked. + *
Do not stash if a system gesture is started. */ private boolean shouldStashForIme() { if (DisplayController.isTransientTaskbar(mActivity)) { @@ -997,6 +989,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba return false; } + // Do not stash if a gesture started. + if (mIsSystemGestureInProgress) { + return false; + } + return mIsImeShowing || mIsImeSwitcherShowing; } @@ -1008,13 +1005,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; } /**