Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8399022 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "PIP: Fix transition to and from PiP when letterboxed" into pi-dev

parents 1f6e5dce 604ef951
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -409,7 +409,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP

    final Rect mContainingFrame = new Rect();

    private final Rect mParentFrame = new Rect();
    final Rect mParentFrame = new Rect();

    /** Whether the parent frame would have been different if there was no display cutout. */
    private boolean mParentFrameWasClippedByDisplayCutout;
@@ -931,6 +931,17 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
                    mContainingFrame.set(contentFrame);
                }
            }

            final TaskStack stack = getStack();
            if (inPinnedWindowingMode() && stack != null
                    && stack.lastAnimatingBoundsWasToFullscreen()) {
                // PIP edge case: When going from pinned to fullscreen, we apply a
                // tempInsetFrame for the full task - but we're still at the start of the animation.
                // To prevent a jump if there's a letterbox, restrict to the parent frame.
                mInsetFrame.intersectUnchecked(parentFrame);
                mContainingFrame.intersectUnchecked(parentFrame);
            }

            mDisplayFrame.set(mContainingFrame);
            layoutXDiff = !mInsetFrame.isEmpty() ? mInsetFrame.left - mContainingFrame.left : 0;
            layoutYDiff = !mInsetFrame.isEmpty() ? mInsetFrame.top - mContainingFrame.top : 0;
+7 −0
Original line number Diff line number Diff line
@@ -927,6 +927,13 @@ class WindowStateAnimator {
                mTmpSourceBounds.inset(mWin.mLastRelayoutContentInsets);
                allowStretching = true;
            }

            // Make sure that what we're animating to and from is actually the right size in case
            // the window cannot take up the full screen.
            mTmpStackBounds.intersectUnchecked(w.mParentFrame);
            mTmpSourceBounds.intersectUnchecked(w.mParentFrame);
            mTmpAnimatingBounds.intersectUnchecked(w.mParentFrame);

            if (!mTmpSourceBounds.isEmpty()) {
                // Get the final target stack bounds, if we are not animating, this is just the
                // current stack bounds