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

Commit 83c1ab8a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Return the correct root task when start activity from recents" into sc-v2-dev

parents bb7bd187 bd6bb3f5
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
@@ -354,6 +354,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);