Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt +34 −4 Original line number Diff line number Diff line Loading @@ -71,9 +71,31 @@ class DesktopMixedTransitionHandler( wct: WindowContainerTransaction?, ) = freeformTaskTransitionHandler.startWindowingModeTransition(targetWindowingMode, wct) /** Delegates starting minimized mode transition to [FreeformTaskTransitionHandler]. */ override fun startMinimizedModeTransition(wct: WindowContainerTransaction?): IBinder = freeformTaskTransitionHandler.startMinimizedModeTransition(wct) /** * Starts a minimize transition for [taskId], with [isLastTask] which is true if the task going * to be minimized is the last visible task. */ override fun startMinimizedModeTransition( wct: WindowContainerTransaction?, taskId: Int, isLastTask: Boolean, ): IBinder { if (!DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_EXIT_BY_MINIMIZE_TRANSITION_BUGFIX.isTrue) { return freeformTaskTransitionHandler.startMinimizedModeTransition( wct, taskId, isLastTask, ) } requireNotNull(wct) return transitions .startTransition(Transitions.TRANSIT_MINIMIZE, wct, /* handler= */ this) .also { transition -> pendingMixedTransitions.add( PendingMixedTransition.Minimize(transition, taskId, isLastTask) ) } } /** Delegates starting PiP transition to [FreeformTaskTransitionHandler]. */ override fun startPipTransition(wct: WindowContainerTransaction?): IBinder = Loading Loading @@ -298,7 +320,15 @@ class DesktopMixedTransitionHandler( finishTransaction: SurfaceControl.Transaction, finishCallback: TransitionFinishCallback, ): Boolean { if (!DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue) return false val shouldAnimate = if (info.type == Transitions.TRANSIT_MINIMIZE) { DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_EXIT_BY_MINIMIZE_TRANSITION_BUGFIX.isTrue } else { DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue } if (!shouldAnimate) { return false } val minimizeChange = findTaskChange(info, pending.minimizingTask) if (minimizeChange == null) { Loading libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +3 −1 Original line number Diff line number Diff line Loading @@ -844,7 +844,9 @@ class DesktopTasksController( ) wct.reorder(taskInfo.token, false) val transition = freeformTaskTransitionStarter.startMinimizedModeTransition(wct) val isLastTask = taskRepository.isOnlyVisibleNonClosingTask(taskId, displayId) val transition: IBinder = freeformTaskTransitionStarter.startMinimizedModeTransition(wct, taskId, isLastTask) desktopTasksLimiter.ifPresent { it.addPendingMinimizeChange( transition = transition, Loading libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java +2 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,8 @@ public class FreeformTaskTransitionHandler } @Override public IBinder startMinimizedModeTransition(WindowContainerTransaction wct) { public IBinder startMinimizedModeTransition( WindowContainerTransaction wct, int taskId, boolean isLastTask) { final int type = Transitions.TRANSIT_MINIMIZE; final IBinder token = mTransitions.startTransition(type, wct, this); mPendingTransitionTokens.add(token); Loading libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionStarter.java +5 −2 Original line number Diff line number Diff line Loading @@ -38,10 +38,13 @@ public interface FreeformTaskTransitionStarter { * Starts window minimization transition * * @param wct the {@link WindowContainerTransaction} that changes the windowing mode * @param taskId the task id of the task being minimized * @param isLastTask true if the task being minimized is the last visible task * * @return the started transition */ IBinder startMinimizedModeTransition(WindowContainerTransaction wct); IBinder startMinimizedModeTransition( WindowContainerTransaction wct, int taskId, boolean isLastTask); /** * Starts close window transition Loading libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java +3 −1 Original line number Diff line number Diff line Loading @@ -389,7 +389,9 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel, FocusT } else if (id == R.id.back_button) { mTaskOperations.injectBackKey(mDisplayId); } else if (id == R.id.minimize_window) { mTaskOperations.minimizeTask(mTaskToken); // This minimize button uses the same effect for any minimization. The last argument // doesn't matter. mTaskOperations.minimizeTask(mTaskToken, mTaskId, /* isLastTask= */ false); } else if (id == R.id.maximize_window) { RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); final DisplayAreaInfo rootDisplayAreaInfo = Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopMixedTransitionHandler.kt +34 −4 Original line number Diff line number Diff line Loading @@ -71,9 +71,31 @@ class DesktopMixedTransitionHandler( wct: WindowContainerTransaction?, ) = freeformTaskTransitionHandler.startWindowingModeTransition(targetWindowingMode, wct) /** Delegates starting minimized mode transition to [FreeformTaskTransitionHandler]. */ override fun startMinimizedModeTransition(wct: WindowContainerTransaction?): IBinder = freeformTaskTransitionHandler.startMinimizedModeTransition(wct) /** * Starts a minimize transition for [taskId], with [isLastTask] which is true if the task going * to be minimized is the last visible task. */ override fun startMinimizedModeTransition( wct: WindowContainerTransaction?, taskId: Int, isLastTask: Boolean, ): IBinder { if (!DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_EXIT_BY_MINIMIZE_TRANSITION_BUGFIX.isTrue) { return freeformTaskTransitionHandler.startMinimizedModeTransition( wct, taskId, isLastTask, ) } requireNotNull(wct) return transitions .startTransition(Transitions.TRANSIT_MINIMIZE, wct, /* handler= */ this) .also { transition -> pendingMixedTransitions.add( PendingMixedTransition.Minimize(transition, taskId, isLastTask) ) } } /** Delegates starting PiP transition to [FreeformTaskTransitionHandler]. */ override fun startPipTransition(wct: WindowContainerTransaction?): IBinder = Loading Loading @@ -298,7 +320,15 @@ class DesktopMixedTransitionHandler( finishTransaction: SurfaceControl.Transaction, finishCallback: TransitionFinishCallback, ): Boolean { if (!DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue) return false val shouldAnimate = if (info.type == Transitions.TRANSIT_MINIMIZE) { DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_EXIT_BY_MINIMIZE_TRANSITION_BUGFIX.isTrue } else { DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION.isTrue } if (!shouldAnimate) { return false } val minimizeChange = findTaskChange(info, pending.minimizingTask) if (minimizeChange == null) { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +3 −1 Original line number Diff line number Diff line Loading @@ -844,7 +844,9 @@ class DesktopTasksController( ) wct.reorder(taskInfo.token, false) val transition = freeformTaskTransitionStarter.startMinimizedModeTransition(wct) val isLastTask = taskRepository.isOnlyVisibleNonClosingTask(taskId, displayId) val transition: IBinder = freeformTaskTransitionStarter.startMinimizedModeTransition(wct, taskId, isLastTask) desktopTasksLimiter.ifPresent { it.addPendingMinimizeChange( transition = transition, Loading
libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionHandler.java +2 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,8 @@ public class FreeformTaskTransitionHandler } @Override public IBinder startMinimizedModeTransition(WindowContainerTransaction wct) { public IBinder startMinimizedModeTransition( WindowContainerTransaction wct, int taskId, boolean isLastTask) { final int type = Transitions.TRANSIT_MINIMIZE; final IBinder token = mTransitions.startTransition(type, wct, this); mPendingTransitionTokens.add(token); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskTransitionStarter.java +5 −2 Original line number Diff line number Diff line Loading @@ -38,10 +38,13 @@ public interface FreeformTaskTransitionStarter { * Starts window minimization transition * * @param wct the {@link WindowContainerTransaction} that changes the windowing mode * @param taskId the task id of the task being minimized * @param isLastTask true if the task being minimized is the last visible task * * @return the started transition */ IBinder startMinimizedModeTransition(WindowContainerTransaction wct); IBinder startMinimizedModeTransition( WindowContainerTransaction wct, int taskId, boolean isLastTask); /** * Starts close window transition Loading
libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java +3 −1 Original line number Diff line number Diff line Loading @@ -389,7 +389,9 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel, FocusT } else if (id == R.id.back_button) { mTaskOperations.injectBackKey(mDisplayId); } else if (id == R.id.minimize_window) { mTaskOperations.minimizeTask(mTaskToken); // This minimize button uses the same effect for any minimization. The last argument // doesn't matter. mTaskOperations.minimizeTask(mTaskToken, mTaskId, /* isLastTask= */ false); } else if (id == R.id.maximize_window) { RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); final DisplayAreaInfo rootDisplayAreaInfo = Loading