Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30c2c24f authored by Tony Huang's avatar Tony Huang
Browse files

Make new task follow source task root

For current split UX, we want new task launched by old task can
stay in split. To achieve this, add a rule if source task's root
task is created by organizer then use it as root task of new task.

Bug: 202740040
Test: manual
Test: pass existing tests
Change-Id: Ibcbf3c4f78607a9ca44eee29c4c078daf1c46402
parent be0c2bdc
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -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;
        }
+5 −0
Original line number Diff line number Diff line
@@ -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;
    }