Close the multi instance menu when other things open
This change ensures that if open, the Taskbar multi instance menu will close when another long press app menu is launched, when a folder is opened, or when Taskbar all apps is opened. Fix: 383510315 Test: Open Taskbar multi instance menu and ensure it closes when other views are opening (Taskbar all apps, a folder, and app long press menu) Flag: com.android.launcher3.enable_multi_instance_menu_taskbar Change-Id: Id2d64c86a76978af8db56d3a083dc79a677a1a5d
This commit is contained in:
@@ -86,6 +86,8 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
private TaskbarControllers mControllers;
|
||||
private boolean mAllowInitialSplitSelection;
|
||||
private AppInfo[] mAppInfosList;
|
||||
private ManageWindowsTaskbarShortcut<BaseTaskbarContext> mManageWindowsTaskbarShortcut;
|
||||
|
||||
|
||||
public TaskbarPopupController(TaskbarActivityContext context) {
|
||||
mContext = context;
|
||||
@@ -111,6 +113,19 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
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;
|
||||
}
|
||||
@@ -206,6 +221,7 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
if (Flags.enableMultiInstanceMenuTaskbar()
|
||||
&& DesktopModeStatus.canEnterDesktopMode(mContext)
|
||||
&& !mControllers.taskbarStashController.isInOverview()) {
|
||||
maybeCloseMultiInstanceMenu();
|
||||
shortcuts.addAll(getMultiInstanceMenuOptions().toList());
|
||||
}
|
||||
return shortcuts.stream();
|
||||
@@ -325,8 +341,9 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba
|
||||
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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user