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
This commit is contained in:
Winson Chung
2017-02-14 17:15:48 -08:00
parent b454cb8842
commit f1f72f6562

View File

@@ -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.
*/