Merge "Show taskbar when external keyboard is attached, in 3 button nav mode and desktop windowing mode" into main
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java
index c883759..db7d0eb 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.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 @@
         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;
     }