From 41299be43bf814c9cb9b9545d60f17834199c956 Mon Sep 17 00:00:00 2001 From: mattsziklay Date: Wed, 22 Mar 2023 16:31:45 -0700 Subject: [PATCH] Bring task to front when interacting with header. When interacting with window header (moving, tapping, opening menu), the window is brought to the front. Test: Manual, open multiple windows layered over each other, interact with header, including handle menu button, and verify layering changes. Bug: 271487478 Change-Id: I840d63896fee879b4a7917dc9936af9ac3f444ec --- .../shell/desktopmode/DesktopModeController.java | 14 ++++++++++++++ .../wm/shell/desktopmode/DesktopTasksController.kt | 11 +++++++++++ .../DesktopModeWindowDecorViewModel.java | 9 +++++++++ 3 files changed, 34 insertions(+) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java index c9c0e40f616ce..acee343d8597f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java @@ -312,6 +312,20 @@ public class DesktopModeController implements RemoteCallable c.setDesktopModeActive(true)); @@ -272,9 +273,17 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { if (id != R.id.caption_handle && id != R.id.desktop_mode_caption) { return false; } + moveTaskToFront(mTaskOrganizer.getRunningTaskInfo(mTaskId)); return mDragDetector.onMotionEvent(e); } + private void moveTaskToFront(RunningTaskInfo taskInfo) { + if (!taskInfo.isFocused) { + mDesktopTasksController.ifPresent(c -> c.moveTaskToFront(taskInfo)); + mDesktopModeController.ifPresent(c -> c.moveTaskToFront(taskInfo)); + } + } + /** * @param e {@link MotionEvent} to process * @return {@code true} if the motion event is handled.