diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index c883759692..db7d0ebf59 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -60,8 +60,10 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.anim.AnimatorListeners; +import com.android.launcher3.statehandlers.DesktopVisibilityController; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.MultiPropertyFactory.MultiProperty; +import com.android.quickstep.LauncherActivityInterface; import com.android.quickstep.SystemUiProxy; import java.io.PrintWriter; @@ -951,6 +953,15 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba if (mActivity.isHardwareKeyboard() && DisplayController.isPinnedTaskbar(mActivity)) { return false; } + + // Do not stash if hardware keyboard is attached, in 3 button nav and desktop windowing mode + DesktopVisibilityController visibilityController = + LauncherActivityInterface.INSTANCE.getDesktopVisibilityController(); + if (visibilityController != null && mActivity.isHardwareKeyboard() + && mActivity.isThreeButtonNav() && visibilityController.areFreeformTasksVisible()) { + return false; + } + return mIsImeShowing || mIsImeSwitcherShowing; }