Invalidate resized bounds on aspect ratio changes
When the aspect ratio is changed on the pinned window,
the previously saved user-resize bounds are used as
the restore bounds when unexpanding, which have the previous
aspect ratio still.
This change invalidates the user resized bounds on aspect
ratio changes, which then forces it to be re-set to the new
normal bounds.
Bug: 163420655
Test: PIP portrait Youtube video, touch to expand menu, click
'next' icon to switch to a landscape video. The landscape video
should restore to its unexpanded bounds with the correct aspect
ratio.
Change-Id: I808993a921e3dc3858fad2c131e6a86bf45955e0
Merged-In: I808993a921e3dc3858fad2c131e6a86bf45955e0
(cherry picked from commit 9b9c7d019b)
This commit is contained in:
committed by
Jorge Gil
parent
be05cd4b40
commit
c07be0dfcf
@@ -230,7 +230,10 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio
|
||||
|
||||
@Override
|
||||
public void onAspectRatioChanged(float aspectRatio) {
|
||||
mHandler.post(() -> mPipBoundsHandler.onAspectRatioChanged(aspectRatio));
|
||||
mHandler.post(() -> {
|
||||
mPipBoundsHandler.onAspectRatioChanged(aspectRatio);
|
||||
mTouchHandler.onAspectRatioChanged();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -364,6 +364,10 @@ public class PipResizeGestureHandler {
|
||||
mUserResizeBounds.set(bounds);
|
||||
}
|
||||
|
||||
void invalidateUserResizeBounds() {
|
||||
mUserResizeBounds.setEmpty();
|
||||
}
|
||||
|
||||
Rect getUserResizeBounds() {
|
||||
return mUserResizeBounds;
|
||||
}
|
||||
|
||||
@@ -422,8 +422,21 @@ public class PipTouchHandler {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Responds to IPinnedStackListener on resetting aspect ratio for the pinned window.
|
||||
*/
|
||||
public void onAspectRatioChanged() {
|
||||
mPipResizeGestureHandler.invalidateUserResizeBounds();
|
||||
}
|
||||
|
||||
public void onMovementBoundsChanged(Rect insetBounds, Rect normalBounds, Rect curBounds,
|
||||
boolean fromImeAdjustment, boolean fromShelfAdjustment, int displayRotation) {
|
||||
// Set the user resized bounds equal to the new normal bounds in case they were
|
||||
// invalidated (e.g. by an aspect ratio change).
|
||||
if (mPipResizeGestureHandler.getUserResizeBounds().isEmpty()) {
|
||||
mPipResizeGestureHandler.setUserResizeBounds(normalBounds);
|
||||
}
|
||||
|
||||
final int bottomOffset = mIsImeShowing ? mImeHeight : 0;
|
||||
final boolean fromDisplayRotationChanged = (mDisplayRotation != displayRotation);
|
||||
if (fromDisplayRotationChanged) {
|
||||
|
||||
Reference in New Issue
Block a user