Merge "Return the correct root task when start activity from recents" into sc-v2-dev am: 83c1ab8a4b am: 28c844526c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15799665 Change-Id: I9c2ed10d948c336ff6a669d526c5da70c5c179d5
This commit is contained in:
@@ -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);
|
||||
if (candidateTask.getParent() == null) {
|
||||
launchRootTask.addChild(candidateTask, position);
|
||||
} else if (candidateTask.getParent() != launchRootTask) {
|
||||
candidateTask.reparent(launchRootTask, position);
|
||||
}
|
||||
} else if (rootTask.getDisplayArea() != this || !rootTask.isRootTask()) {
|
||||
if (rootTask.getParent() == null) {
|
||||
addChild(rootTask, 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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user