From ec7c0722bdf07815aa77829ee408eae2d0dd115f Mon Sep 17 00:00:00 2001 From: Tony Huang Date: Mon, 18 Apr 2022 17:02:38 +0800 Subject: [PATCH] Support exit to full screen to non-split app When a task no longer supports multi-window, we should dismiss split to the task so users can continue interacting with the task to prevent bad UX. We should exit split and extand the side NoLongerSupportMultiWindow let user could interact continuously. Fix: 221255438 Test: manual Test: pass existing tests Change-Id: Iae61d821028755dcca96edb904912495b268bf8c --- .../android/wm/shell/splitscreen/StageCoordinator.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 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 05a240ae6aad4..06f7eda00d1f1 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 @@ -1827,15 +1827,17 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, @Override public void onNoLongerSupportMultiWindow() { if (mMainStage.isActive()) { + final boolean isMainStage = mMainStageListener == this; if (!ENABLE_SHELL_TRANSITIONS) { - StageCoordinator.this.exitSplitScreen(null /* childrenToTop */, + StageCoordinator.this.exitSplitScreen(isMainStage ? mMainStage : mSideStage, EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW); + return; } + final int stageType = isMainStage ? STAGE_TYPE_MAIN : STAGE_TYPE_SIDE; final WindowContainerTransaction wct = new WindowContainerTransaction(); - prepareExitSplitScreen(STAGE_TYPE_UNDEFINED, wct); - mSplitTransitions.startDismissTransition(wct, - StageCoordinator.this, STAGE_TYPE_UNDEFINED, + prepareExitSplitScreen(stageType, wct); + mSplitTransitions.startDismissTransition(wct,StageCoordinator.this, stageType, EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW); } }