diff options
author | 2021-10-19 05:34:11 +0000 | |
---|---|---|
committer | 2021-10-19 05:34:11 +0000 | |
commit | 8172fc3e42e54ac325640afc28fa538a8d8668e8 (patch) | |
tree | 7cfeddd2d2b3793eb1a2357502bfbe9775a92492 | |
parent | 3fc42998a858f136b6c2252dd47e4830e01594bc (diff) | |
parent | 30c2c24f4d7ec5bbb6ba84cdd9c5cff3b7d93454 (diff) |
Merge "Make new task follow source task root" into sc-v2-dev
-rw-r--r-- | services/core/java/com/android/server/wm/ActivityStarter.java | 8 | ||||
-rw-r--r-- | services/core/java/com/android/server/wm/TaskDisplayArea.java | 5 |
2 files changed, 10 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 47467abf459b..01e3e1919c39 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -2737,9 +2737,11 @@ class ActivityStarter { // If it exist, we need to reparent target root task from TDA to launch root task. final TaskDisplayArea tda = mTargetRootTask.getDisplayArea(); final Task launchRootTask = tda.getLaunchRootTask(mTargetRootTask.getWindowingMode(), - mTargetRootTask.getActivityType(), null /** options */, null /** sourceTask */, - 0 /** launchFlags */); - if (launchRootTask != null && launchRootTask != mTargetRootTask) { + mTargetRootTask.getActivityType(), null /** options */, + mSourceRootTask, 0 /** launchFlags */); + // If target root task is created by organizer, let organizer handle reparent itself. + if (!mTargetRootTask.mCreatedByOrganizer && launchRootTask != null + && launchRootTask != mTargetRootTask) { mTargetRootTask.reparent(launchRootTask, POSITION_TOP); mTargetRootTask = launchRootTask; } diff --git a/services/core/java/com/android/server/wm/TaskDisplayArea.java b/services/core/java/com/android/server/wm/TaskDisplayArea.java index 71844ce02b20..275ed0ee28a9 100644 --- a/services/core/java/com/android/server/wm/TaskDisplayArea.java +++ b/services/core/java/com/android/server/wm/TaskDisplayArea.java @@ -1275,6 +1275,11 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> { } } } + // For better split UX, If task launch by the source task which root task is created by + // organizer, it should also launch in that root too. + if (sourceTask != null && sourceTask.getRootTask().mCreatedByOrganizer) { + return sourceTask.getRootTask(); + } return null; } |