diff options
| author | 2024-11-09 04:33:53 +0000 | |
|---|---|---|
| committer | 2024-11-13 19:34:52 +0000 | |
| commit | 05035c6771f283bd40d44e14ef2c7f9362e83cbd (patch) | |
| tree | 1838e07d9998af635b7d007a3d4171440e5e0d53 | |
| parent | 2034639bb61d1493572cbb285ddb5b8902e64b81 (diff) | |
Remove immersive task from repository when task is removed
When a task is removed from the active task list (i.e. it is no longer a
desktop task), make sure to mark it as no longer immersive if it was
immersive.
This change also updates the persistence repository with a desktop id
(using display id as there are no desktops yet) because otherwise
multi-display unit tests always modify the same desktop, which is
causing failures if a second display's repository data is non-null.
Flag: com.android.window.flags.enable_fully_immersive_in_desktop
Fix: 378172979
Test: enter desktop immersive, exit desktop to fullscreen or split, go
back to desktop, verify immersive button is responsive and the task can
re-enter immersive.
Change-Id: I2dcf6a7acca34dc60ae15b2a725a0d05048468eb
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt index 08ca55f93e3f..7fcb7678f6af 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt @@ -411,6 +411,12 @@ class DesktopRepository ( desktopTaskDataByDisplayId[displayId]?.freeformTasksInZOrder?.toDumpString()) // Remove task from unminimized task if it is minimized. unminimizeTask(displayId, taskId) + // Mark task as not in immersive if it was immersive. + setTaskInFullImmersiveState( + displayId = displayId, + taskId = taskId, + immersive = false + ) removeActiveTask(taskId) removeVisibleTask(taskId) if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { @@ -487,6 +493,9 @@ class DesktopRepository ( mainCoroutineScope.launch { try { persistentRepository.addOrUpdateDesktop( + // Use display id as desktop id for now since only once desktop per display + // is supported. + desktopId = displayId, visibleTasks = desktopTaskDataByDisplayIdCopy.visibleTasks, minimizedTasks = desktopTaskDataByDisplayIdCopy.minimizedTasks, freeformTasksInZOrder = desktopTaskDataByDisplayIdCopy.freeformTasksInZOrder |