From 18c329c2080ec6b40d632d1fcdbee3fc424059cf Mon Sep 17 00:00:00 2001 From: mattsziklay Date: Wed, 5 Apr 2023 18:12:00 -0700 Subject: [PATCH] Prevent multiple handle menus from opening. Changes the handle menu logic such that if the open menu button is clicked while the menu is currently open, it will close the existing menu rather than make a second handle menu. Bug: 277125646 Test: Manual; click the exposed corners of the open menu button while handle menu is open. Confirm clicking handle menu pills is unaffected. Change-Id: I230e1dcac2a338c41a7c74acb37e3c13b711f218 --- .../windowdecor/DesktopModeWindowDecorViewModel.java | 8 ++++++-- .../windowdecor/DesktopModeWindowDecoration.java | 11 ++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index f99821747fef7..181a5beeb4875 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -312,8 +312,12 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } else if (id == R.id.back_button) { mTaskOperations.injectBackKey(); } else if (id == R.id.caption_handle || id == R.id.open_menu_button) { - moveTaskToFront(mTaskOrganizer.getRunningTaskInfo(mTaskId)); - decoration.createHandleMenu(); + if (!decoration.isHandleMenuActive()) { + moveTaskToFront(mTaskOrganizer.getRunningTaskInfo(mTaskId)); + decoration.createHandleMenu(); + } else { + decoration.closeHandleMenu(); + } } else if (id == R.id.desktop_button) { mDesktopModeController.ifPresent(c -> c.setDesktopModeActive(true)); mDesktopTasksController.ifPresent(c -> c.moveToDesktop(mTaskId)); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index e08d40d76c169..23d3c6a3a1512 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -446,6 +446,14 @@ public class DesktopModeWindowDecoration extends WindowDecoration