Merge "Don't override bounds when reparenting" into rvc-dev
This commit is contained in:
@@ -3340,7 +3340,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub {
|
|||||||
|
|
||||||
// After reparenting (which only resizes the task to the stack bounds), resize the
|
// After reparenting (which only resizes the task to the stack bounds), resize the
|
||||||
// task to the actual bounds provided
|
// task to the actual bounds provided
|
||||||
task.resize(bounds, resizeMode, preserveWindow, !DEFER_RESUME);
|
task.resize(bounds, resizeMode, preserveWindow);
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Binder.restoreCallingIdentity(ident);
|
Binder.restoreCallingIdentity(ident);
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ package com.android.server.wm;
|
|||||||
|
|
||||||
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
||||||
import static android.app.ActivityTaskManager.RESIZE_MODE_FORCED;
|
import static android.app.ActivityTaskManager.RESIZE_MODE_FORCED;
|
||||||
import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM;
|
|
||||||
import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM_SCREEN_ROTATION;
|
import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM_SCREEN_ROTATION;
|
||||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
|
import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
|
||||||
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
|
||||||
@@ -29,7 +28,6 @@ import static android.app.WindowConfiguration.PINNED_WINDOWING_MODE_ELEVATION_IN
|
|||||||
import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
|
import static android.app.WindowConfiguration.ROTATION_UNDEFINED;
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
|
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
|
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
|
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
|
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
|
import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
|
||||||
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
|
import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
|
||||||
@@ -661,7 +659,7 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
updateTaskDescription();
|
updateTaskDescription();
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean resize(Rect bounds, int resizeMode, boolean preserveWindow, boolean deferResume) {
|
boolean resize(Rect bounds, int resizeMode, boolean preserveWindow) {
|
||||||
mAtmService.deferWindowLayout();
|
mAtmService.deferWindowLayout();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -701,7 +699,7 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
boolean kept = true;
|
boolean kept = true;
|
||||||
if (updatedConfig) {
|
if (updatedConfig) {
|
||||||
final ActivityRecord r = topRunningActivityLocked();
|
final ActivityRecord r = topRunningActivityLocked();
|
||||||
if (r != null && !deferResume) {
|
if (r != null) {
|
||||||
kept = r.ensureActivityConfiguration(0 /* globalChanges */,
|
kept = r.ensureActivityConfiguration(0 /* globalChanges */,
|
||||||
preserveWindow);
|
preserveWindow);
|
||||||
// Preserve other windows for resizing because if resizing happens when there
|
// Preserve other windows for resizing because if resizing happens when there
|
||||||
@@ -853,30 +851,11 @@ class Task extends WindowContainer<WindowContainer> {
|
|||||||
// TODO: Should this call be moved inside the resize method in WM?
|
// TODO: Should this call be moved inside the resize method in WM?
|
||||||
toStack.prepareFreezingTaskBounds();
|
toStack.prepareFreezingTaskBounds();
|
||||||
|
|
||||||
// Make sure the task has the appropriate bounds/size for the stack it is in.
|
if (toStackWindowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY
|
||||||
final boolean toStackSplitScreenPrimary =
|
&& moveStackMode == REPARENT_KEEP_STACK_AT_FRONT) {
|
||||||
toStackWindowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
|
// Move recents to front so it is not behind home stack when going into docked
|
||||||
final Rect configBounds = getRequestedOverrideBounds();
|
// mode
|
||||||
if ((toStackWindowingMode == WINDOWING_MODE_FULLSCREEN
|
mStackSupervisor.moveRecentsStackToFront(reason);
|
||||||
|| toStackWindowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY)
|
|
||||||
&& !Objects.equals(configBounds, toStack.getRequestedOverrideBounds())) {
|
|
||||||
kept = resize(toStack.getRequestedOverrideBounds(), RESIZE_MODE_SYSTEM,
|
|
||||||
!mightReplaceWindow, deferResume);
|
|
||||||
} else if (toStackWindowingMode == WINDOWING_MODE_FREEFORM) {
|
|
||||||
Rect bounds = getLaunchBounds();
|
|
||||||
if (bounds == null) {
|
|
||||||
mStackSupervisor.getLaunchParamsController().layoutTask(this, null);
|
|
||||||
bounds = configBounds;
|
|
||||||
}
|
|
||||||
kept = resize(bounds, RESIZE_MODE_FORCED, !mightReplaceWindow, deferResume);
|
|
||||||
} else if (toStackSplitScreenPrimary || toStackWindowingMode == WINDOWING_MODE_PINNED) {
|
|
||||||
if (toStackSplitScreenPrimary && moveStackMode == REPARENT_KEEP_STACK_AT_FRONT) {
|
|
||||||
// Move recents to front so it is not behind home stack when going into docked
|
|
||||||
// mode
|
|
||||||
mStackSupervisor.moveRecentsStackToFront(reason);
|
|
||||||
}
|
|
||||||
kept = resize(toStack.getRequestedOverrideBounds(), RESIZE_MODE_SYSTEM,
|
|
||||||
!mightReplaceWindow, deferResume);
|
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
mAtmService.continueWindowLayout();
|
mAtmService.continueWindowLayout();
|
||||||
|
|||||||
Reference in New Issue
Block a user