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

Commit 08d05a3e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Return the correct root task when start activity from recents" into...

Merge "Return the correct root task when start activity from recents" into sc-v2-dev am: 83c1ab8a am: 28c84452

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15799665

Change-Id: I9c2ed10d948c336ff6a669d526c5da70c5c179d5
parents 2ff29fac 28c84452
Loading
Loading
Loading
Loading
+9 −11
Original line number Diff line number Diff line
@@ -1095,29 +1095,27 @@ final class TaskDisplayArea extends DisplayArea<WindowContainer> {
                return rootTask;
            }
        } else if (candidateTask != null) {
            final Task rootTask = candidateTask;
            final int position = onTop ? POSITION_TOP : POSITION_BOTTOM;
            final Task launchRootTask = getLaunchRootTask(windowingMode, activityType, options,
                    sourceTask, launchFlags);

            if (launchRootTask != null) {
                if (rootTask.getParent() == null) {
                    launchRootTask.addChild(rootTask, position);
                } else if (rootTask.getParent() != launchRootTask) {
                    rootTask.reparent(launchRootTask, position);
                }
            } else if (rootTask.getDisplayArea() != this || !rootTask.isRootTask()) {
                if (rootTask.getParent() == null) {
                    addChild(rootTask, position);
                if (candidateTask.getParent() == null) {
                    launchRootTask.addChild(candidateTask, position);
                } else if (candidateTask.getParent() != launchRootTask) {
                    candidateTask.reparent(launchRootTask, position);
                }
            } else if (candidateTask.getDisplayArea() != this || !candidateTask.isRootTask()) {
                if (candidateTask.getParent() == null) {
                    addChild(candidateTask, position);
                } else {
                    rootTask.reparent(this, onTop);
                    candidateTask.reparent(this, onTop);
                }
            }
            // Update windowing mode if necessary, e.g. moving a pinned task to fullscreen.
            if (candidateTask.getWindowingMode() != windowingMode) {
                candidateTask.setWindowingMode(windowingMode);
            }
            return rootTask;
            return candidateTask.getRootTask();
        }
        return new Task.Builder(mAtmService)
                .setWindowingMode(windowingMode)
+4 −0
Original line number Diff line number Diff line
@@ -355,6 +355,10 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
            throw new IllegalArgumentException("reparent: can't reparent to null " + this);
        }

        if (newParent == this) {
            throw new IllegalArgumentException("Can not reparent to itself " + this);
        }

        final WindowContainer oldParent = mParent;
        if (mParent == newParent) {
            throw new IllegalArgumentException("WC=" + this + " already child of " + mParent);