Merge "Fix the root task of secondary split screen could be overwritten." into rvc-dev am: 67a056a94c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11716093 Change-Id: Ia0619f4429508d84386f68e16871a294dcf248e6
This commit is contained in:
@@ -1742,21 +1742,23 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
|
||||
// reparenting stack finished.
|
||||
// Keep the order from bottom to top.
|
||||
int numStacks = getStackCount();
|
||||
|
||||
final boolean splitScreenActivated = toDisplayArea.isSplitScreenModeActivated();
|
||||
final ActivityStack rootStack = splitScreenActivated ? toDisplayArea
|
||||
.getTopStackInWindowingMode(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY) : null;
|
||||
for (int stackNdx = 0; stackNdx < numStacks; stackNdx++) {
|
||||
final ActivityStack stack = getStackAt(stackNdx);
|
||||
// Always finish non-standard type stacks.
|
||||
if (destroyContentOnRemoval || !stack.isActivityTypeStandardOrUndefined()) {
|
||||
stack.finishAllActivitiesImmediately();
|
||||
} else {
|
||||
// If default display is in split-window mode, set windowing mode of the
|
||||
// stack to split-screen secondary. Otherwise, set the windowing mode to
|
||||
// undefined by default to let stack inherited the windowing mode from the
|
||||
// new display.
|
||||
final int windowingMode = toDisplayArea.isSplitScreenModeActivated()
|
||||
? WINDOWING_MODE_SPLIT_SCREEN_SECONDARY
|
||||
: WINDOWING_MODE_UNDEFINED;
|
||||
stack.reparent(toDisplayArea, true /* onTop */);
|
||||
stack.setWindowingMode(windowingMode);
|
||||
// Reparent the stack to the root task of secondary-split-screen or display area.
|
||||
stack.reparent(stack.supportsSplitScreenWindowingMode() && rootStack != null
|
||||
? rootStack : toDisplayArea, POSITION_TOP);
|
||||
|
||||
// Set the windowing mode to undefined by default to let the stack inherited the
|
||||
// windowing mode.
|
||||
stack.setWindowingMode(WINDOWING_MODE_UNDEFINED);
|
||||
lastReparentedStack = stack;
|
||||
}
|
||||
// Stacks may be removed from this display. Ensure each stack will be processed
|
||||
@@ -1764,6 +1766,17 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
|
||||
stackNdx -= numStacks - getStackCount();
|
||||
numStacks = getStackCount();
|
||||
}
|
||||
if (lastReparentedStack != null && splitScreenActivated) {
|
||||
if (!lastReparentedStack.supportsSplitScreenWindowingMode()) {
|
||||
mAtmService.getTaskChangeNotificationController()
|
||||
.notifyActivityDismissingDockedStack();
|
||||
toDisplayArea.onSplitScreenModeDismissed(lastReparentedStack);
|
||||
} else if (rootStack != null) {
|
||||
// update focus
|
||||
rootStack.moveToFront("display-removed");
|
||||
}
|
||||
}
|
||||
|
||||
mRemoved = true;
|
||||
|
||||
return lastReparentedStack;
|
||||
|
||||
Reference in New Issue
Block a user