diff options
| author | 2024-11-29 15:56:00 +0000 | |
|---|---|---|
| committer | 2024-12-12 02:07:43 -0800 | |
| commit | 5bd98c2794dced82688dcf0b7c0edbef63c64d3b (patch) | |
| tree | 5ff2268c87be11f51db0744009f9d1140f6cf46c | |
| parent | 515d71a6f6f04b2d712f2d7aeba9550f63c06e5a (diff) | |
Open a Desktop mode app in full screen while split screen is active.
Fixes: 372185677
Flag: com.android.window.flags.enable_desktop_windowing_mode
Test: manual test and atest StageCoordinatorTests
Change-Id: I16a04c3952627c308c8e6633276ff234bdc4c887
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index e48c887c625f..d0c21c9ec7c0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -20,6 +20,7 @@ import static android.app.ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_A import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static android.content.Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT; @@ -145,6 +146,7 @@ import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.recents.RecentTasksController; import com.android.wm.shell.shared.TransactionPool; import com.android.wm.shell.shared.TransitionUtil; +import com.android.wm.shell.shared.desktopmode.DesktopModeStatus; import com.android.wm.shell.shared.split.SplitBounds; import com.android.wm.shell.shared.split.SplitScreenConstants.PersistentSnapPosition; import com.android.wm.shell.shared.split.SplitScreenConstants.SplitIndex; @@ -2766,6 +2768,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, final @WindowManager.TransitionType int type = request.getType(); final boolean isOpening = isOpeningType(type); final boolean inFullscreen = triggerTask.getWindowingMode() == WINDOWING_MODE_FULLSCREEN; + final boolean inDesktopMode = DesktopModeStatus.canEnterDesktopMode(mContext) + && triggerTask.getWindowingMode() == WINDOWING_MODE_FREEFORM; final StageTaskListener stage = getStageOfTask(triggerTask); if (isOpening && inFullscreen) { @@ -2820,6 +2824,12 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, mSplitTransitions.setDismissTransition(transition, stageType, EXIT_REASON_FULLSCREEN_REQUEST); } + } else if (isOpening && inDesktopMode) { + // If the app being opened is in Desktop mode, set it to full screen and dismiss + // split screen stage. + prepareExitSplitScreen(STAGE_TYPE_UNDEFINED, out); + out.setWindowingMode(triggerTask.token, WINDOWING_MODE_UNDEFINED) + .setBounds(triggerTask.token, null); } else if (isOpening && inFullscreen) { final int activityType = triggerTask.getActivityType(); if (activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS) { |