Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8dbbd4b1 authored by Maryam Dehaini's avatar Maryam Dehaini Committed by Android (Google) Code Review
Browse files

Merge "Do not clear Task#mMultiWindowRestoreWindowingMode on exit split transitions" into main

parents cb325845 523ef851
Loading
Loading
Loading
Loading
+10 −4
Original line number Diff line number Diff line
@@ -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);
            });
+14 −2
Original line number Diff line number Diff line
@@ -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;
        }
@@ -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.
     *
@@ -4651,7 +4663,7 @@ class Task extends TaskFragment {
        }

        // Reset multi-window restore windowing mode.
        mMultiWindowRestoreWindowingMode = INVALID_WINDOWING_MODE;
        clearRestoreWindowingMode(windowingMode);

        final ActivityRecord topActivity = getTopNonFinishingActivity();