diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index b623b2f2b1804..c65ca798a7b00 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -2252,9 +2252,10 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D return; } - if (!allowResizeInDockedMode && getStack(DOCKED_STACK_ID) != null) { - // If the docked stack exist we don't allow resizes of stacks not caused by the docked - // stack size changing so things don't get out of sync. + if (!allowResizeInDockedMode && !StackId.tasksAreFloating(stackId) && + getStack(DOCKED_STACK_ID) != null) { + // If the docked stack exists, don't resize non-floating stacks independently of the + // size computed from the docked stack size (otherwise they will be out of sync) return; } diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index dc437ea723159..8b5f5acc5c28f 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -340,7 +340,7 @@ public class TaskStack extends WindowContainer implements DimLayer.DimLaye * @return the source bounds for the bounds animation. */ void getAnimatingSourceBounds(Rect outBounds) { - if (mBoundsAnimationSourceBounds != null) { + if (!mBoundsAnimationSourceBounds.isEmpty()) { outBounds.set(mBoundsAnimationSourceBounds); return; } @@ -419,6 +419,11 @@ public class TaskStack extends WindowContainer implements DimLayer.DimLaye // we can just update and return them here setBounds(mBounds); mBoundsAfterRotation.set(mBounds); + + // Once we've set the bounds based on the rotation of the old bounds in the new + // orientation, clear the animation target bounds since they are obsolete + mBoundsAnimationTarget.setEmpty(); + mBoundsAnimationSourceBounds.setEmpty(); return true; }