From 2003f5796c929eb55d50accb46d80f8079ee19f0 Mon Sep 17 00:00:00 2001 From: Tony Huang Date: Fri, 29 Oct 2021 13:15:59 +0800 Subject: Fix side stage cannot be focused When split active by drag drop, the active point is onStageHasChildrenChanged callback but we don't reorder side stage to top then make it cannot be focused. Add reorder root to top for fixing. Fix: 204510713 Test: manual Test: pass existing tests Change-Id: I553a57250c302ff435a35c9a10599fc375e48248 --- .../Shell/src/com/android/wm/shell/splitscreen/SideStage.java | 5 +++++ .../Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SideStage.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SideStage.java index 51104e44569e..d67f4a6077b6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SideStage.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SideStage.java @@ -45,6 +45,11 @@ class SideStage extends StageTaskListener { stageTaskUnfoldController); } + void moveToTop(Rect rootBounds, WindowContainerTransaction wct) { + final WindowContainerToken rootToken = mRootTaskInfo.token; + wct.setBounds(rootToken, rootBounds).reorder(rootToken, true /* onTop */); + } + void addTask(ActivityManager.RunningTaskInfo task, Rect rootBounds, WindowContainerTransaction wct) { final WindowContainerToken rootToken = mRootTaskInfo.token; 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 3b62afc7320e..2cca41153ef0 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 @@ -758,7 +758,7 @@ class StageCoordinator implements SplitLayout.SplitLayoutHandler, final WindowContainerTransaction wct = new WindowContainerTransaction(); // Make sure the main stage is active. mMainStage.activate(getMainStageBounds(), wct, true /* reparent */); - mSideStage.setBounds(getSideStageBounds(), wct); + mSideStage.moveToTop(getSideStageBounds(), wct); mTaskOrganizer.applyTransaction(wct); } if (!mLogger.hasStartedSession() && mMainStageListener.mHasChildren -- cgit v1.2.3-59-g8ed1b