diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index fc9f9d002b..d3835978c0 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -22,6 +22,7 @@ import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCH import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_LONGPRESS_SHOW; import static com.android.launcher3.taskbar.Utilities.appendFlag; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING; import android.animation.Animator; @@ -149,6 +150,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba private @Nullable AnimatorSet mAnimator; private boolean mIsSystemGestureInProgress; private boolean mIsImeShowing; + private boolean mIsImeSwitcherShowing; private boolean mEnableManualStashingForTests = false; @@ -571,9 +573,11 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba } // Only update the following flags when system gesture is not in progress. - maybeResetStashedInAppAllApps(hasAnyFlag(FLAG_STASHED_IN_APP_IME) == mIsImeShowing); - if (hasAnyFlag(FLAG_STASHED_IN_APP_IME) != mIsImeShowing) { - updateStateForFlag(FLAG_STASHED_IN_APP_IME, mIsImeShowing); + boolean shouldStashForIme = shouldStashForIme(); + maybeResetStashedInAppAllApps( + hasAnyFlag(FLAG_STASHED_IN_APP_IME) == shouldStashForIme); + if (hasAnyFlag(FLAG_STASHED_IN_APP_IME) != shouldStashForIme) { + updateStateForFlag(FLAG_STASHED_IN_APP_IME, shouldStashForIme); applyState(TASKBAR_STASH_DURATION_FOR_IME, getTaskbarStashStartDelayForIme()); } } @@ -625,8 +629,9 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba // 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, mIsImeShowing); + updateStateForFlag(FLAG_STASHED_IN_APP_IME, shouldStashForIme()); animDuration = TASKBAR_STASH_DURATION_FOR_IME; startDelay = getTaskbarStashStartDelayForIme(); } @@ -634,6 +639,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba applyState(skipAnim ? 0 : animDuration, skipAnim ? 0 : startDelay); } + private boolean shouldStashForIme() { + return mIsImeShowing || mIsImeSwitcherShowing; + } + /** * Updates the proper flag to indicate whether the task bar should be stashed. * @@ -699,6 +708,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba pw.println(String.format( "%s\tmIsSystemGestureInProgress=%b", prefix, mIsSystemGestureInProgress)); pw.println(String.format("%s\tmIsImeShowing=%b", prefix, mIsImeShowing)); + pw.println(String.format("%s\tmIsImeSwitcherShowing=%b", prefix, mIsImeSwitcherShowing)); } private static String getStateString(int flags) {