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

Commit 792fd0c9 authored by Mateusz Cicheński's avatar Mateusz Cicheński Committed by Automerger Merge Worker
Browse files

Merge "Update the min/max allowed pip size on aspect ratio change." into...

Merge "Update the min/max allowed pip size on aspect ratio change." into tm-qpr-dev am: 6bd105d5 am: d06d3cd4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19539084



Change-Id: I321a77e55ca7921347c551baa469e317c08447dd
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 581b6946 d06d3cd4
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -503,6 +503,12 @@ public class PipController implements PipTransitionController.PipTransitionCallb
                            updateMovementBounds(null /* toBounds */, false /* fromRotation */,
                                    false /* fromImeAdjustment */, false /* fromShelfAdjustment */,
                                    null /* windowContainerTransaction */);
                        } else {
                            // when we enter pip for the first time, the destination bounds and pip
                            // bounds will already match, since they are calculated prior to
                            // starting the animation, so we only need to update the min/max size
                            // that is used for e.g. double tap to maximized state
                            mTouchHandler.updateMinMaxSize(ratio);
                        }
                    }

+22 −7
Original line number Diff line number Diff line
@@ -412,13 +412,7 @@ public class PipTouchHandler {
                mPipBoundsState.getExpandedBounds(), insetBounds, expandedMovementBounds,
                bottomOffset);

        if (mPipResizeGestureHandler.isUsingPinchToZoom()) {
            updatePinchResizeSizeConstraints(insetBounds, normalBounds, aspectRatio);
        } else {
            mPipResizeGestureHandler.updateMinSize(normalBounds.width(), normalBounds.height());
            mPipResizeGestureHandler.updateMaxSize(mPipBoundsState.getExpandedBounds().width(),
                    mPipBoundsState.getExpandedBounds().height());
        }
        updatePipSizeConstraints(insetBounds, normalBounds, aspectRatio);

        // The extra offset does not really affect the movement bounds, but are applied based on the
        // current state (ime showing, or shelf offset) when we need to actually shift
@@ -487,6 +481,27 @@ public class PipTouchHandler {
        }
    }

    /**
     * Update the values for min/max allowed size of picture in picture window based on the aspect
     * ratio.
     * @param aspectRatio aspect ratio to use for the calculation of min/max size
     */
    public void updateMinMaxSize(float aspectRatio) {
        updatePipSizeConstraints(mInsetBounds, mPipBoundsState.getNormalBounds(),
                aspectRatio);
    }

    private void updatePipSizeConstraints(Rect insetBounds, Rect normalBounds,
            float aspectRatio) {
        if (mPipResizeGestureHandler.isUsingPinchToZoom()) {
            updatePinchResizeSizeConstraints(insetBounds, normalBounds, aspectRatio);
        } else {
            mPipResizeGestureHandler.updateMinSize(normalBounds.width(), normalBounds.height());
            mPipResizeGestureHandler.updateMaxSize(mPipBoundsState.getExpandedBounds().width(),
                    mPipBoundsState.getExpandedBounds().height());
        }
    }

    private void updatePinchResizeSizeConstraints(Rect insetBounds, Rect normalBounds,
            float aspectRatio) {
        final int shorterLength = Math.min(mPipBoundsState.getDisplayBounds().width(),