summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vania Desmonda <vaniadesmonda@google.com> 2024-12-12 06:28:57 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2024-12-12 06:28:57 -0800
commita5a17bf7ce03db45ff7fce5b5076ad03b7b0c20f (patch)
tree9ca9ecd46092007005808eb20b1518654010d0fb
parentcf06953c49919c2cb96e9e82e828dc61979e8e66 (diff)
parent5bd98c2794dced82688dcf0b7c0edbef63c64d3b (diff)
Merge "Open a Desktop mode app in full screen while split screen is active." into main
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java10
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) {