Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +26 −56 Original line number Diff line number Diff line Loading @@ -339,91 +339,61 @@ class DesktopRepository( } } /** Register a left tiled task to desktop state. */ fun addLeftTiledTask(displayId: Int, taskId: Int) { logD("addLeftTiledTask for displayId=%d, taskId=%d", displayId, taskId) val activeDesk = checkNotNull(desktopData.getDefaultDesk(displayId)) { "Expected desk in display: $displayId" } addLeftTiledTaskToDesk(displayId, taskId, activeDesk.deskId) } private fun addLeftTiledTaskToDesk(displayId: Int, taskId: Int, deskId: Int) { logD("addLeftTiledTaskToDesk for displayId=%d, taskId=%d", displayId, taskId) fun addLeftTiledTaskToDesk(displayId: Int, taskId: Int, deskId: Int) { logD( "addLeftTiledTaskToDesk for displayId=%d, taskId=%d, deskId=%d", displayId, taskId, deskId, ) val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" } desk.leftTiledTaskId = taskId if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { updatePersistentRepository(displayId) } } /** Register a right tiled task to desktop state. */ fun addRightTiledTask(displayId: Int, taskId: Int) { logD("addRightTiledTask for displayId=%d, taskId=%d", displayId, taskId) val activeDesk = checkNotNull(desktopData.getDefaultDesk(displayId)) { "Expected desk in display: $displayId" updatePersistentRepositoryForDesk(deskId) } addRightTiledTaskToDesk(displayId, taskId, activeDesk.deskId) } private fun addRightTiledTaskToDesk(displayId: Int, taskId: Int, deskId: Int) { logD("addRightTiledTaskToDesk for displayId=%d, taskId=%d", displayId, taskId) fun addRightTiledTaskToDesk(displayId: Int, taskId: Int, deskId: Int) { logD( "addRightTiledTaskToDesk for displayId=%d, taskId=%d, deskId=%d", displayId, taskId, deskId, ) val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" } desk.rightTiledTaskId = taskId if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { updatePersistentRepository(displayId) updatePersistentRepositoryForDesk(deskId) } } /** Gets a registered left tiled task to desktop state or returns null. */ fun getLeftTiledTask(displayId: Int): Int? { logD("getLeftTiledTask for displayId=%d", displayId) return desktopData.getActiveDesk(displayId)?.leftTiledTaskId fun getLeftTiledTask(deskId: Int): Int? { logD("getLeftTiledTask for deskId=%d", deskId) return desktopData.getDesk(deskId)?.leftTiledTaskId } /** gets a registered right tiled task to desktop state or returns null. */ fun getRightTiledTask(displayId: Int): Int? { logD("getRightTiledTask for displayId=%d", displayId) return desktopData.getActiveDesk(displayId)?.rightTiledTaskId } /* Unregisters a left tiled task from desktop state. */ fun removeLeftTiledTask(displayId: Int) { logD("removeLeftTiledTask for displayId=%d", displayId) val activeDesk = checkNotNull(desktopData.getDefaultDesk(displayId)) { "Expected desk in display: $displayId" } removeLeftTiledTaskFromDesk(displayId, activeDesk.deskId) fun getRightTiledTask(deskId: Int): Int? { logD("getRightTiledTask for deskId=%d", deskId) return desktopData.getDesk(deskId)?.rightTiledTaskId } private fun removeLeftTiledTaskFromDesk(displayId: Int, deskId: Int) { fun removeLeftTiledTaskFromDesk(displayId: Int, deskId: Int) { logD("removeLeftTiledTaskToDesk for displayId=%d", displayId) val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" } desk.leftTiledTaskId = null if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { updatePersistentRepository(displayId) } } /* Unregisters a right tiled task from desktop state. */ fun removeRightTiledTask(displayId: Int) { logD("removeRightTiledTask for displayId=%d", displayId) val activeDesk = checkNotNull(desktopData.getDefaultDesk(displayId)) { "Expected desk in display: $displayId" updatePersistentRepositoryForDesk(deskId) } removeRightTiledTaskFromDesk(displayId, activeDesk.deskId) } private fun removeRightTiledTaskFromDesk(displayId: Int, deskId: Int) { fun removeRightTiledTaskFromDesk(displayId: Int, deskId: Int) { logD("removeRightTiledTaskFromDesk for displayId=%d", displayId) val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" } desk.rightTiledTaskId = null if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { updatePersistentRepository(displayId) updatePersistentRepositoryForDesk(deskId) } } Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +5 −1 Original line number Diff line number Diff line Loading @@ -3787,7 +3787,11 @@ class DesktopTasksController( desksOrganizer.deactivateDesk(wct, deskId) return { transition -> desksTransitionObserver.addPendingTransition( DeskTransition.DeactivateDesk(token = transition, deskId = deskId) DeskTransition.DeactivateDesk( token = transition, deskId = deskId, runOnTransitEnd = { snapEventHandler.onDeskDeactivated(deskId) }, ) ) } } Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DeskTransition.kt +9 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,15 @@ sealed interface DeskTransition { } /** A transition to deactivate a desk. */ data class DeactivateDesk(override val token: IBinder, val deskId: Int) : DeskTransition { data class DeactivateDesk( override val token: IBinder, val deskId: Int, ) : DeskTransition { constructor(token: IBinder, deskId: Int, runOnTransitEnd: (() -> Unit)?) : this(token, deskId) { this.runOnTransitEnd = runOnTransitEnd } var runOnTransitEnd: (() -> Unit)? = null override fun copyWithToken(token: IBinder): DeskTransition = copy(token) } Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserver.kt +1 −0 Original line number Diff line number Diff line Loading @@ -172,6 +172,7 @@ class DesksTransitionObserver( val desktopRepository = desktopUserRepositories.current var deskChangeFound = false deskTransition.runOnTransitEnd?.invoke() val changes = info?.changes ?: emptyList() for (change in changes) { val isDeskChange = desksOrganizer.isDeskChange(change, deskTransition.deskId) Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/persistence/DesktopRepositoryInitializerImpl.kt +14 −5 Original line number Diff line number Diff line Loading @@ -140,17 +140,26 @@ class DesktopRepositoryInitializerImpl( ) } if (task.desktopTaskTilingState == DesktopTaskTilingState.LEFT) { repository.addLeftTiledTask( val tilingEnabled = DesktopExperienceFlags.ENABLE_TILE_RESIZING.isTrue() if ( tilingEnabled && task.desktopTaskTilingState == DesktopTaskTilingState.LEFT ) { repository.addLeftTiledTaskToDesk( persistentDesktop.displayId, task.taskId, newDeskId, ) } else if ( } if ( tilingEnabled && task.desktopTaskTilingState == DesktopTaskTilingState.RIGHT ) { repository.addRightTiledTask( repository.addRightTiledTaskToDesk( persistentDesktop.displayId, task.taskId, newDeskId, ) } } Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopRepository.kt +26 −56 Original line number Diff line number Diff line Loading @@ -339,91 +339,61 @@ class DesktopRepository( } } /** Register a left tiled task to desktop state. */ fun addLeftTiledTask(displayId: Int, taskId: Int) { logD("addLeftTiledTask for displayId=%d, taskId=%d", displayId, taskId) val activeDesk = checkNotNull(desktopData.getDefaultDesk(displayId)) { "Expected desk in display: $displayId" } addLeftTiledTaskToDesk(displayId, taskId, activeDesk.deskId) } private fun addLeftTiledTaskToDesk(displayId: Int, taskId: Int, deskId: Int) { logD("addLeftTiledTaskToDesk for displayId=%d, taskId=%d", displayId, taskId) fun addLeftTiledTaskToDesk(displayId: Int, taskId: Int, deskId: Int) { logD( "addLeftTiledTaskToDesk for displayId=%d, taskId=%d, deskId=%d", displayId, taskId, deskId, ) val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" } desk.leftTiledTaskId = taskId if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { updatePersistentRepository(displayId) } } /** Register a right tiled task to desktop state. */ fun addRightTiledTask(displayId: Int, taskId: Int) { logD("addRightTiledTask for displayId=%d, taskId=%d", displayId, taskId) val activeDesk = checkNotNull(desktopData.getDefaultDesk(displayId)) { "Expected desk in display: $displayId" updatePersistentRepositoryForDesk(deskId) } addRightTiledTaskToDesk(displayId, taskId, activeDesk.deskId) } private fun addRightTiledTaskToDesk(displayId: Int, taskId: Int, deskId: Int) { logD("addRightTiledTaskToDesk for displayId=%d, taskId=%d", displayId, taskId) fun addRightTiledTaskToDesk(displayId: Int, taskId: Int, deskId: Int) { logD( "addRightTiledTaskToDesk for displayId=%d, taskId=%d, deskId=%d", displayId, taskId, deskId, ) val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" } desk.rightTiledTaskId = taskId if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { updatePersistentRepository(displayId) updatePersistentRepositoryForDesk(deskId) } } /** Gets a registered left tiled task to desktop state or returns null. */ fun getLeftTiledTask(displayId: Int): Int? { logD("getLeftTiledTask for displayId=%d", displayId) return desktopData.getActiveDesk(displayId)?.leftTiledTaskId fun getLeftTiledTask(deskId: Int): Int? { logD("getLeftTiledTask for deskId=%d", deskId) return desktopData.getDesk(deskId)?.leftTiledTaskId } /** gets a registered right tiled task to desktop state or returns null. */ fun getRightTiledTask(displayId: Int): Int? { logD("getRightTiledTask for displayId=%d", displayId) return desktopData.getActiveDesk(displayId)?.rightTiledTaskId } /* Unregisters a left tiled task from desktop state. */ fun removeLeftTiledTask(displayId: Int) { logD("removeLeftTiledTask for displayId=%d", displayId) val activeDesk = checkNotNull(desktopData.getDefaultDesk(displayId)) { "Expected desk in display: $displayId" } removeLeftTiledTaskFromDesk(displayId, activeDesk.deskId) fun getRightTiledTask(deskId: Int): Int? { logD("getRightTiledTask for deskId=%d", deskId) return desktopData.getDesk(deskId)?.rightTiledTaskId } private fun removeLeftTiledTaskFromDesk(displayId: Int, deskId: Int) { fun removeLeftTiledTaskFromDesk(displayId: Int, deskId: Int) { logD("removeLeftTiledTaskToDesk for displayId=%d", displayId) val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" } desk.leftTiledTaskId = null if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { updatePersistentRepository(displayId) } } /* Unregisters a right tiled task from desktop state. */ fun removeRightTiledTask(displayId: Int) { logD("removeRightTiledTask for displayId=%d", displayId) val activeDesk = checkNotNull(desktopData.getDefaultDesk(displayId)) { "Expected desk in display: $displayId" updatePersistentRepositoryForDesk(deskId) } removeRightTiledTaskFromDesk(displayId, activeDesk.deskId) } private fun removeRightTiledTaskFromDesk(displayId: Int, deskId: Int) { fun removeRightTiledTaskFromDesk(displayId: Int, deskId: Int) { logD("removeRightTiledTaskFromDesk for displayId=%d", displayId) val desk = checkNotNull(desktopData.getDesk(deskId)) { "Did not find desk: $deskId" } desk.rightTiledTaskId = null if (DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_PERSISTENCE.isTrue()) { updatePersistentRepository(displayId) updatePersistentRepositoryForDesk(deskId) } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +5 −1 Original line number Diff line number Diff line Loading @@ -3787,7 +3787,11 @@ class DesktopTasksController( desksOrganizer.deactivateDesk(wct, deskId) return { transition -> desksTransitionObserver.addPendingTransition( DeskTransition.DeactivateDesk(token = transition, deskId = deskId) DeskTransition.DeactivateDesk( token = transition, deskId = deskId, runOnTransitEnd = { snapEventHandler.onDeskDeactivated(deskId) }, ) ) } } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DeskTransition.kt +9 −1 Original line number Diff line number Diff line Loading @@ -53,7 +53,15 @@ sealed interface DeskTransition { } /** A transition to deactivate a desk. */ data class DeactivateDesk(override val token: IBinder, val deskId: Int) : DeskTransition { data class DeactivateDesk( override val token: IBinder, val deskId: Int, ) : DeskTransition { constructor(token: IBinder, deskId: Int, runOnTransitEnd: (() -> Unit)?) : this(token, deskId) { this.runOnTransitEnd = runOnTransitEnd } var runOnTransitEnd: (() -> Unit)? = null override fun copyWithToken(token: IBinder): DeskTransition = copy(token) } Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/multidesks/DesksTransitionObserver.kt +1 −0 Original line number Diff line number Diff line Loading @@ -172,6 +172,7 @@ class DesksTransitionObserver( val desktopRepository = desktopUserRepositories.current var deskChangeFound = false deskTransition.runOnTransitEnd?.invoke() val changes = info?.changes ?: emptyList() for (change in changes) { val isDeskChange = desksOrganizer.isDeskChange(change, deskTransition.deskId) Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/persistence/DesktopRepositoryInitializerImpl.kt +14 −5 Original line number Diff line number Diff line Loading @@ -140,17 +140,26 @@ class DesktopRepositoryInitializerImpl( ) } if (task.desktopTaskTilingState == DesktopTaskTilingState.LEFT) { repository.addLeftTiledTask( val tilingEnabled = DesktopExperienceFlags.ENABLE_TILE_RESIZING.isTrue() if ( tilingEnabled && task.desktopTaskTilingState == DesktopTaskTilingState.LEFT ) { repository.addLeftTiledTaskToDesk( persistentDesktop.displayId, task.taskId, newDeskId, ) } else if ( } if ( tilingEnabled && task.desktopTaskTilingState == DesktopTaskTilingState.RIGHT ) { repository.addRightTiledTask( repository.addRightTiledTaskToDesk( persistentDesktop.displayId, task.taskId, newDeskId, ) } } Loading