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

Commit 20feb238 authored by Shuming Hao's avatar Shuming Hao Committed by Android (Google) Code Review
Browse files

Merge "Revert "Reset side stage position after child task vanishes"" into main

parents fbedf58b b51d9982
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_MAIN;
import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_SIDE;
import static com.android.wm.shell.splitscreen.SplitScreen.STAGE_TYPE_UNDEFINED;
import static com.android.wm.shell.splitscreen.SplitScreenController.ENTER_REASON_LAUNCHER;
import static com.android.wm.shell.splitscreen.SplitScreenController.ENTER_REASON_MULTI_INSTANCE;
import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW;
import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_APP_FINISHED;
import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_CHILD_TASK_ENTER_PIP;
@@ -1098,11 +1099,16 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,

    void setSideStagePosition(@SplitPosition int sideStagePosition,
            @Nullable WindowContainerTransaction wct) {
        setSideStagePosition(sideStagePosition, true /* updateBounds */, wct);
    }

    private void setSideStagePosition(@SplitPosition int sideStagePosition, boolean updateBounds,
            @Nullable WindowContainerTransaction wct) {
        if (mSideStagePosition == sideStagePosition) return;
        mSideStagePosition = sideStagePosition;
        sendOnStagePositionChanged();

        if (mSideStage.mVisible) {
        if (mSideStage.mVisible && updateBounds) {
            if (wct == null) {
                // onLayoutChanged builds/applies a wct with the contents of updateWindowBounds.
                onLayoutSizeChanged(mSplitLayout);
@@ -1193,7 +1199,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        if (!isSplitActive()) return;

        final WindowContainerTransaction wct = new WindowContainerTransaction();
        setSideStagePosition(SPLIT_POSITION_BOTTOM_OR_RIGHT, wct);
        applyExitSplitScreen(childrenToTop, wct, exitReason);
    }

@@ -1593,13 +1598,6 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
        }
        if (present) {
            updateRecentTasksSplitPair();
        } else if (mMainStage.getChildCount() == 0 && mSideStage.getChildCount() == 0) {
            mRecentTasks.ifPresent(recentTasks -> {
                // remove the split pair mapping from recentTasks, and disable further updates
                // to splits in the recents until we enter split again.
                recentTasks.removeSplitPair(taskId);
            });
            exitSplitScreen(mMainStage, EXIT_REASON_ROOT_TASK_VANISHED);
        }

        for (int i = mListeners.size() - 1; i >= 0; --i) {