diff options
4 files changed, 7 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java b/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java index 2beb3780633e..35add129309f 100644 --- a/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java +++ b/services/core/java/com/android/server/wm/DisplayAreaOrganizerController.java @@ -353,7 +353,7 @@ public class DisplayAreaOrganizerController extends IDisplayAreaOrganizerControl // Only update focus/visibility for the last one because there may be many root tasks are // reparented and the intermediate states are unnecessary. if (lastReparentedRootTask != null) { - lastReparentedRootTask.postReparent(); + lastReparentedRootTask.resumeNextFocusAfterReparent(); } } } diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 7d9971cc8013..a72d9aa9ec6b 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -5683,7 +5683,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp // Only update focus/visibility for the last one because there may be many root tasks are // reparented and the intermediate states are unnecessary. if (lastReparentedRootTask != null) { - lastReparentedRootTask.postReparent(); + lastReparentedRootTask.resumeNextFocusAfterReparent(); } releaseSelfIfNeeded(); mDisplayPolicy.release(); diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index 6242b9791464..9a6a51848317 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -66,7 +66,6 @@ import static com.android.server.wm.ActivityTaskSupervisor.ON_TOP; import static com.android.server.wm.ActivityTaskSupervisor.PRESERVE_WINDOWS; import static com.android.server.wm.ActivityTaskSupervisor.dumpHistoryList; import static com.android.server.wm.ActivityTaskSupervisor.printThisActivity; -import static com.android.server.wm.RecentsAnimationController.REORDER_KEEP_IN_PLACE; import static com.android.server.wm.RootWindowContainerProto.IS_HOME_RECENTS_COMPONENT; import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER; import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER; @@ -2077,6 +2076,10 @@ class RootWindowContainer extends WindowContainer<DisplayContent> + " to its current taskDisplayArea=" + taskDisplayArea); } rootTask.reparent(taskDisplayArea, onTop); + + // Resume focusable root task after reparenting to another display area. + rootTask.resumeNextFocusAfterReparent(); + // TODO(multi-display): resize rootTasks properly if moved from split-screen. } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 136a5a16fa7d..aa96c12e7262 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -1464,12 +1464,6 @@ class Task extends WindowContainer<WindowContainer> { adjustBoundsForDisplayChangeIfNeeded(getDisplayContent()); mRootWindowContainer.updateUIDsPresentOnDisplay(); - - // Resume next focusable root task after reparenting to another display if we aren't - // removing the prevous display. - if (oldDisplay != null && oldDisplay.isRemoving()) { - postReparent(); - } } void cleanUpActivityReferences(ActivityRecord r) { @@ -5462,8 +5456,7 @@ class Task extends WindowContainer<WindowContainer> { mRootWindowContainer.resumeFocusedTasksTopActivities(); } - /** Resume next focusable root task after reparenting to another display. */ - void postReparent() { + void resumeNextFocusAfterReparent() { adjustFocusToNextFocusableTask("reparent", true /* allowFocusSelf */, true /* moveDisplayToTop */); mRootWindowContainer.resumeFocusedTasksTopActivities(); |