From f8b022ef0ff850c6d403ca6ec71d77a939b01224 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 --- .../android/wm/shell/splitscreen/StageCoordinator.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 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 9d6e34ddd9d7f..91f9d25223978 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 @@ -1786,15 +1786,18 @@ 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); + prepareExitSplitScreen(stageType, wct); mSplitTransitions.startDismissTransition(null /* transition */, wct, - StageCoordinator.this, STAGE_TYPE_UNDEFINED, + StageCoordinator.this, stageType, EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW); } }