Merge "Move pip behind home stack on dismiss" into rvc-dev
This commit is contained in:
@@ -943,19 +943,7 @@ class ActivityStack extends Task {
|
||||
// task's ordering. However, we still need to move 'task' to back. The intention is that
|
||||
// this ends up behind the home-task so that it is made invisible; so, if the home task
|
||||
// is not a child of this, reparent 'task' to the back of the home task's actual parent.
|
||||
final ActivityStack home = displayArea.getOrCreateRootHomeTask();
|
||||
final WindowContainer homeParent = home.getParent();
|
||||
final Task homeParentTask = homeParent != null ? homeParent.asTask() : null;
|
||||
if (homeParentTask == null) {
|
||||
((ActivityStack) task).reparent(displayArea, false /* onTop */);
|
||||
} else if (homeParentTask == this) {
|
||||
// Apparently reparent early-outs if same stack, so we have to explicitly reorder.
|
||||
positionChildAtBottom(task);
|
||||
} else {
|
||||
task.reparent((ActivityStack) homeParentTask, false /* toTop */,
|
||||
REPARENT_LEAVE_STACK_IN_PLACE, false /* animate */, false /* deferResume */,
|
||||
"moveToBack");
|
||||
}
|
||||
displayArea.positionTaskBehindHome((ActivityStack) task);
|
||||
}
|
||||
|
||||
// TODO: Should each user have there own stacks?
|
||||
|
||||
@@ -1441,11 +1441,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
|
||||
try {
|
||||
stack.setWindowingMode(WINDOWING_MODE_UNDEFINED);
|
||||
stack.setBounds(null);
|
||||
if (toDisplay.getDisplayId() != stack.getDisplayId()) {
|
||||
stack.reparent(toDisplay.getDefaultTaskDisplayArea(), false /* onTop */);
|
||||
} else {
|
||||
toDisplay.getDefaultTaskDisplayArea().positionStackAtBottom(stack);
|
||||
}
|
||||
toDisplay.getDefaultTaskDisplayArea().positionTaskBehindHome(stack);
|
||||
|
||||
// Follow on the workaround: activities are kept force hidden till the new windowing
|
||||
// mode is set.
|
||||
|
||||
@@ -765,6 +765,32 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
|
||||
onStackOrderChanged(stack);
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves/reparents `task` to the back of whatever container the home stack is in. This is for
|
||||
* when we just want to move a task to "the back" vs. a specific place. The primary use-case
|
||||
* is to make sure that moved-to-back apps go into secondary split when in split-screen mode.
|
||||
*/
|
||||
void positionTaskBehindHome(ActivityStack task) {
|
||||
final ActivityStack home = getOrCreateRootHomeTask();
|
||||
final WindowContainer homeParent = home.getParent();
|
||||
final Task homeParentTask = homeParent != null ? homeParent.asTask() : null;
|
||||
if (homeParentTask == null) {
|
||||
// reparent throws if parent didn't change...
|
||||
if (task.getParent() == this) {
|
||||
positionStackAtBottom(task);
|
||||
} else {
|
||||
task.reparent(this, false /* onTop */);
|
||||
}
|
||||
} else if (homeParentTask == task.getParent()) {
|
||||
// Apparently reparent early-outs if same stack, so we have to explicitly reorder.
|
||||
((ActivityStack) homeParentTask).positionChildAtBottom(task);
|
||||
} else {
|
||||
task.reparent((ActivityStack) homeParentTask, false /* toTop */,
|
||||
Task.REPARENT_LEAVE_STACK_IN_PLACE, false /* animate */,
|
||||
false /* deferResume */, "positionTaskBehindHome");
|
||||
}
|
||||
}
|
||||
|
||||
ActivityStack getStack(int rootTaskId) {
|
||||
for (int i = getStackCount() - 1; i >= 0; --i) {
|
||||
final ActivityStack stack = getStackAt(i);
|
||||
|
||||
Reference in New Issue
Block a user