Merge "Allow caller dismissing split to specify top stack" into rvc-dev am: 3c5ea9cd82

Change-Id: Icc0d6b89326683175790e56a156af8f3eb8e6b54
This commit is contained in:
TreeHugger Robot
2020-04-10 17:08:54 +00:00
committed by Automerger Merge Worker
3 changed files with 11 additions and 5 deletions

View File

@@ -757,7 +757,7 @@ class ActivityStack extends Task {
// warning toast about it. // warning toast about it.
mAtmService.getTaskChangeNotificationController() mAtmService.getTaskChangeNotificationController()
.notifyActivityDismissingDockedStack(); .notifyActivityDismissingDockedStack();
taskDisplayArea.onSplitScreenModeDismissed(); taskDisplayArea.onSplitScreenModeDismissed(this);
} }
} }

View File

@@ -2198,7 +2198,7 @@ public class ActivityStackSupervisor implements RecentTasks.Callbacks {
// split-screen in split-screen. // split-screen in split-screen.
mService.getTaskChangeNotificationController() mService.getTaskChangeNotificationController()
.notifyActivityDismissingDockedStack(); .notifyActivityDismissingDockedStack();
taskDisplayArea.onSplitScreenModeDismissed(); taskDisplayArea.onSplitScreenModeDismissed(task.getStack());
taskDisplayArea.mDisplayContent.ensureActivitiesVisible(null, 0, PRESERVE_WINDOWS, taskDisplayArea.mDisplayContent.ensureActivitiesVisible(null, 0, PRESERVE_WINDOWS,
true /* notifyClients */); true /* notifyClients */);
} }

View File

@@ -1165,17 +1165,23 @@ final class TaskDisplayArea extends DisplayArea<ActivityStack> {
} }
void onSplitScreenModeDismissed() { void onSplitScreenModeDismissed() {
onSplitScreenModeDismissed(null /* toTop */);
}
void onSplitScreenModeDismissed(ActivityStack toTop) {
mAtmService.deferWindowLayout(); mAtmService.deferWindowLayout();
try { try {
mLaunchRootTask = null; mLaunchRootTask = null;
moveSplitScreenTasksToFullScreen(); moveSplitScreenTasksToFullScreen();
} finally { } finally {
final ActivityStack topFullscreenStack = final ActivityStack topFullscreenStack = toTop != null
getTopStackInWindowingMode(WINDOWING_MODE_FULLSCREEN); ? toTop : getTopStackInWindowingMode(WINDOWING_MODE_FULLSCREEN);
final ActivityStack homeStack = getOrCreateRootHomeTask(); final ActivityStack homeStack = getOrCreateRootHomeTask();
if (topFullscreenStack != null && homeStack != null && !isTopStack(homeStack)) { if (homeStack != null && ((topFullscreenStack != null && !isTopStack(homeStack))
|| toTop != null)) {
// Whenever split-screen is dismissed we want the home stack directly behind the // Whenever split-screen is dismissed we want the home stack directly behind the
// current top fullscreen stack so it shows up when the top stack is finished. // current top fullscreen stack so it shows up when the top stack is finished.
// Or, if the caller specified a stack to be on top after split-screen is dismissed.
// TODO: Would be better to use ActivityDisplay.positionChildAt() for this, however // TODO: Would be better to use ActivityDisplay.positionChildAt() for this, however
// ActivityDisplay doesn't have a direct controller to WM side yet. We can switch // ActivityDisplay doesn't have a direct controller to WM side yet. We can switch
// once we have that. // once we have that.