From 7cac8493f986afbb0842a223af548971a0af03db Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Tue, 14 Jul 2020 15:46:00 +0800 Subject: [PATCH] Keep top fullscreen tasks on top when dismiss splits A fullscreen task was added on top and exit split-screen mode while an activity started, but the activity didn't be resumed because the belonging task was no longer on top after split-screen tasks were reparented to top. Bug: 161170237 Test: start emergency dialer when split-screen activated Change-Id: I44dbe0d2966dd831264ca366f5889d6429d78972 --- .../core/java/com/android/server/wm/TaskDisplayArea.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 4473bd69681be..c3fe6defb1c2a 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -1324,7 +1324,13 @@ final class TaskDisplayArea extends DisplayArea { } void onSplitScreenModeDismissed() { - onSplitScreenModeDismissed(null /* toTop */); + // The focused task could be a non-resizeable fullscreen root task that is on top of the + // other split-screen tasks, therefore had to dismiss split-screen, make sure the current + // focused root task can still be on top after dismissal + final Task rootTask = getFocusedStack(); + final Task toTop = + rootTask != null && !rootTask.inSplitScreenWindowingMode() ? rootTask : null; + onSplitScreenModeDismissed(toTop); } void onSplitScreenModeDismissed(Task toTop) {