From b92d7c36627dd56460fb8cbdb283dca6d6703735 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 Merged-In: Iae61d821028755dcca96edb904912495b268bf8c (cherry picked from commit ec7c0722bdf07815aa77829ee408eae2d0dd115f) --- .../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); } }