Merge "Close the multi instance menu when other things open" into main
diff --git a/quickstep/src/com/android/launcher3/taskbar/ManageWindowsTaskbarShortcut.kt b/quickstep/src/com/android/launcher3/taskbar/ManageWindowsTaskbarShortcut.kt
index 032eb51..75ce7c3 100644
--- a/quickstep/src/com/android/launcher3/taskbar/ManageWindowsTaskbarShortcut.kt
+++ b/quickstep/src/com/android/launcher3/taskbar/ManageWindowsTaskbarShortcut.kt
@@ -148,11 +148,19 @@
FLAG_AUTOHIDE_SUSPEND_MULTI_INSTANCE_MENU_OPEN,
false,
)
+ controllers.taskbarPopupController.cleanUpMultiInstanceMenuReference()
}
}
)
}
+ /** Closes the multi-instance menu if it has been initialized. */
+ fun closeMultiInstanceMenu() {
+ if (::taskbarShortcutAllWindowsView.isInitialized) {
+ taskbarShortcutAllWindowsView.animateClose()
+ }
+ }
+
/**
* A view container for displaying the window of open instances of an app
*
@@ -238,6 +246,7 @@
)
taskbarOverlayContext.dragLayer?.removeView(menuView.rootView)
taskbarOverlayContext.dragLayer.removeTouchController(this)
+ controllers.taskbarPopupController.cleanUpMultiInstanceMenuReference()
}
/** TouchController implementations for closing the carousel when touched outside */
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index 7b326c1..933eb96 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -1401,6 +1401,7 @@
Log.e(TAG, "Unknown type clicked: " + tag);
}
+ mControllers.taskbarPopupController.maybeCloseMultiInstanceMenu();
if (shouldCloseAllOpenViews) {
AbstractFloatingView.closeAllOpenViews(this);
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
index 772d45d..6789824 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java
@@ -87,6 +87,8 @@
private TaskbarControllers mControllers;
private boolean mAllowInitialSplitSelection;
private AppInfo[] mAppInfosList;
+ private ManageWindowsTaskbarShortcut<BaseTaskbarContext> mManageWindowsTaskbarShortcut;
+
public TaskbarPopupController(TaskbarActivityContext context) {
mContext = context;
@@ -112,6 +114,19 @@
mPopupDataProvider.setDeepShortcutMap(deepShortcutMapCopy);
}
+ /** Closes the multi-instance menu if it is enabled and currently open. */
+ public void maybeCloseMultiInstanceMenu() {
+ if (Flags.enableMultiInstanceMenuTaskbar() && mManageWindowsTaskbarShortcut != null) {
+ mManageWindowsTaskbarShortcut.closeMultiInstanceMenu();
+ cleanUpMultiInstanceMenuReference();
+ }
+ }
+
+ /** Releases the reference to the Taskbar multi-instance menu */
+ public void cleanUpMultiInstanceMenuReference() {
+ mManageWindowsTaskbarShortcut = null;
+ }
+
public void setAllowInitialSplitSelection(boolean allowInitialSplitSelection) {
mAllowInitialSplitSelection = allowInitialSplitSelection;
}
@@ -210,6 +225,7 @@
if (Flags.enableMultiInstanceMenuTaskbar()
&& DesktopModeStatus.canEnterDesktopMode(mContext)
&& !mControllers.taskbarStashController.isInOverview()) {
+ maybeCloseMultiInstanceMenu();
shortcuts.addAll(getMultiInstanceMenuOptions().toList());
}
return shortcuts.stream();
@@ -329,8 +345,9 @@
public SystemShortcut.Factory<BaseTaskbarContext> createManageWindowsShortcutFactory() {
return (context, itemInfo, originalView) -> {
if (shouldShowMultiInstanceOptions(itemInfo)) {
- return new ManageWindowsTaskbarShortcut<>(context, itemInfo, originalView,
- mControllers);
+ mManageWindowsTaskbarShortcut = new ManageWindowsTaskbarShortcut<>(
+ context, itemInfo, originalView, mControllers);
+ return mManageWindowsTaskbarShortcut;
}
return null;
};
diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java
index 07d86e4..ddbf3b7 100644
--- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java
@@ -141,6 +141,7 @@
if (isOpen()) {
mSlideInView.close(true);
} else {
+ mControllers.taskbarPopupController.maybeCloseMultiInstanceMenu();
show(true, showKeyboard);
}
}