From f1f72f6562244b87f76275fb56c34bf3b0e3cec9 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Tue, 14 Feb 2017 17:15:48 -0800 Subject: [PATCH] Apply minimized offset when fetching new aspect ratio bounds. Bug: 35091993 Test: Minimize a PiP activity, and then force it to change aspect ratio Change-Id: I0edafcdefcb68224ca6b476b13819847b6b932d9 --- .../server/wm/PinnedStackController.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/services/core/java/com/android/server/wm/PinnedStackController.java b/services/core/java/com/android/server/wm/PinnedStackController.java index a872ea4602bb8..6a8417dc440b7 100644 --- a/services/core/java/com/android/server/wm/PinnedStackController.java +++ b/services/core/java/com/android/server/wm/PinnedStackController.java @@ -105,6 +105,7 @@ class PinnedStackController { private final DisplayMetrics mTmpMetrics = new DisplayMetrics(); private final Rect mTmpInsets = new Rect(); private final Rect mTmpRect = new Rect(); + private final Point mTmpDisplaySize = new Point(); /** * The callback object passed to listeners for them to notify the controller of state changes. @@ -209,6 +210,9 @@ class PinnedStackController { final int top = (int) (stackBounds.centerY() - height / 2f); stackBounds.set(left, top, left + width, top + height); mSnapAlgorithm.applySnapFraction(stackBounds, getMovementBounds(stackBounds), snapFraction); + if (mIsMinimized) { + applyMinimizedOffset(stackBounds, getMovementBounds(stackBounds)); + } return stackBounds; } @@ -269,11 +273,7 @@ class PinnedStackController { mSnapAlgorithm.applySnapFraction(postChangeStackBounds, postChangeMovementBounds, snapFraction); if (mIsMinimized) { - final Point displaySize = new Point(mDisplayInfo.logicalWidth, - mDisplayInfo.logicalHeight); - mService.getStableInsetsLocked(displayContent.getDisplayId(), mStableInsets); - mSnapAlgorithm.applyMinimizedOffset(postChangeStackBounds, postChangeMovementBounds, - displaySize, mStableInsets); + applyMinimizedOffset(postChangeStackBounds, postChangeMovementBounds); } notifyMovementBoundsChanged(false /* fromImeAdjustment */); } @@ -386,6 +386,16 @@ class PinnedStackController { mDisplayInfo.logicalHeight - mTmpInsets.bottom - mScreenEdgeInsets.y); } + /** + * Applies the minimized offsets to the given stack bounds. + */ + private void applyMinimizedOffset(Rect stackBounds, Rect movementBounds) { + mTmpDisplaySize.set(mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight); + mService.getStableInsetsLocked(mDisplayContent.getDisplayId(), mStableInsets); + mSnapAlgorithm.applyMinimizedOffset(stackBounds, movementBounds, mTmpDisplaySize, + mStableInsets); + } + /** * @return the pixels for a given dp value. */