summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Tony Huang <tonyychuang@google.com> 2021-10-19 05:34:11 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-10-19 05:34:11 +0000
commit8172fc3e42e54ac325640afc28fa538a8d8668e8 (patch)
tree7cfeddd2d2b3793eb1a2357502bfbe9775a92492
parent3fc42998a858f136b6c2252dd47e4830e01594bc (diff)
parent30c2c24f4d7ec5bbb6ba84cdd9c5cff3b7d93454 (diff)
Merge "Make new task follow source task root" into sc-v2-dev
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java8
-rw-r--r--services/core/java/com/android/server/wm/TaskDisplayArea.java5
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;
}