Loading libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +10 −4 Original line number Diff line number Diff line Loading @@ -1750,10 +1750,16 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, Objects.requireNonNull(tdaInfo); final int displayWindowingMode = tdaInfo.configuration.windowConfiguration.getWindowingMode(); final int targetWindowingMode; if (DesktopModeFlags.ENABLE_REQUEST_FULLSCREEN_BUGFIX.isTrue()) { // TODO(b/404659187): set windowing mode to undefined for non-freeform displays targetWindowingMode = WINDOWING_MODE_FULLSCREEN; } else { // In freeform-first env, we need to explicitly set the windowing mode when leaving // the split-screen to be fullscreen. final int targetWindowingMode = displayWindowingMode == WINDOWING_MODE_FREEFORM targetWindowingMode = displayWindowingMode == WINDOWING_MODE_FREEFORM ? WINDOWING_MODE_FULLSCREEN : WINDOWING_MODE_UNDEFINED; } toTopStage.doForAllChildTaskInfos(taskInfo -> { wct.setWindowingMode(taskInfo.token, targetWindowingMode); }); Loading services/core/java/com/android/server/wm/Task.java +14 −2 Original line number Diff line number Diff line Loading @@ -4594,7 +4594,7 @@ class Task extends TaskFragment { // Calling Task#setWindowingMode() for leaf task since this is a specialization of // {@link #setWindowingMode(int)} for root task. if (!isRootTask()) { mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE; clearRestoreWindowingMode(windowingMode); super.setWindowingMode(windowingMode); return; } Loading @@ -4602,6 +4602,18 @@ class Task extends TaskFragment { setWindowingModeInner(windowingMode, false /* creating */); } /** * Clears {@link #mMultiWindowRestoreWindowingMode} if the windowing mode has changed. * * @param windowingMode the windowing mode being requested */ private void clearRestoreWindowingMode(int windowingMode) { if (!DesktopModeFlags.ENABLE_REQUEST_FULLSCREEN_BUGFIX.isTrue() || windowingMode != getWindowingMode()) { mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE; } } /** * Version of {@link #setWindowingMode(int)} for root tasks. * Loading Loading @@ -4651,7 +4663,7 @@ class Task extends TaskFragment { } // Reset multi-window restore windowing mode. mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE; clearRestoreWindowingMode(windowingMode); final ActivityRecord topActivity = getTopNonFinishingActivity(); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +10 −4 Original line number Diff line number Diff line Loading @@ -1750,10 +1750,16 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, Objects.requireNonNull(tdaInfo); final int displayWindowingMode = tdaInfo.configuration.windowConfiguration.getWindowingMode(); final int targetWindowingMode; if (DesktopModeFlags.ENABLE_REQUEST_FULLSCREEN_BUGFIX.isTrue()) { // TODO(b/404659187): set windowing mode to undefined for non-freeform displays targetWindowingMode = WINDOWING_MODE_FULLSCREEN; } else { // In freeform-first env, we need to explicitly set the windowing mode when leaving // the split-screen to be fullscreen. final int targetWindowingMode = displayWindowingMode == WINDOWING_MODE_FREEFORM targetWindowingMode = displayWindowingMode == WINDOWING_MODE_FREEFORM ? WINDOWING_MODE_FULLSCREEN : WINDOWING_MODE_UNDEFINED; } toTopStage.doForAllChildTaskInfos(taskInfo -> { wct.setWindowingMode(taskInfo.token, targetWindowingMode); }); Loading
services/core/java/com/android/server/wm/Task.java +14 −2 Original line number Diff line number Diff line Loading @@ -4594,7 +4594,7 @@ class Task extends TaskFragment { // Calling Task#setWindowingMode() for leaf task since this is a specialization of // {@link #setWindowingMode(int)} for root task. if (!isRootTask()) { mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE; clearRestoreWindowingMode(windowingMode); super.setWindowingMode(windowingMode); return; } Loading @@ -4602,6 +4602,18 @@ class Task extends TaskFragment { setWindowingModeInner(windowingMode, false /* creating */); } /** * Clears {@link #mMultiWindowRestoreWindowingMode} if the windowing mode has changed. * * @param windowingMode the windowing mode being requested */ private void clearRestoreWindowingMode(int windowingMode) { if (!DesktopModeFlags.ENABLE_REQUEST_FULLSCREEN_BUGFIX.isTrue() || windowingMode != getWindowingMode()) { mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE; } } /** * Version of {@link #setWindowingMode(int)} for root tasks. * Loading Loading @@ -4651,7 +4663,7 @@ class Task extends TaskFragment { } // Reset multi-window restore windowing mode. mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE; clearRestoreWindowingMode(windowingMode); final ActivityRecord topActivity = getTopNonFinishingActivity(); Loading