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

Commit f18f6b62 authored by Jorge Gil's avatar Jorge Gil Committed by Automerger Merge Worker
Browse files

Merge "Snap the PIP window to the left or right edge after pinch resize" into sc-dev am: 845205c0

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

Change-Id: I18e2d88b16ad37ead63bdb990f3fcb07d13fb5ac
parents 6c722951 845205c0
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -367,7 +367,15 @@ public class PipBoundsAlgorithm {
     *         the default stack bounds when first entering PiP.
     */
    public float getSnapFraction(Rect stackBounds) {
        return mSnapAlgorithm.getSnapFraction(stackBounds, getMovementBounds(stackBounds));
        return getSnapFraction(stackBounds, getMovementBounds(stackBounds));
    }

    /**
     * @return the default snap fraction to apply instead of the default gravity when calculating
     *         the default stack bounds when first entering PiP.
     */
    public float getSnapFraction(Rect stackBounds, Rect movementBounds) {
        return mSnapAlgorithm.getSnapFraction(stackBounds, movementBounds);
    }

    /**
+12 −1
Original line number Diff line number Diff line
@@ -517,7 +517,18 @@ public class PipResizeGestureHandler {
                        || mLastResizeBounds.height() >= PINCH_RESIZE_AUTO_MAX_RATIO * mMaxSize.y) {
                    resizeRectAboutCenter(mLastResizeBounds, mMaxSize.x, mMaxSize.y);
                }
                final float snapFraction = mPipBoundsAlgorithm.getSnapFraction(mLastResizeBounds);
                final int leftEdge = mLastResizeBounds.left;
                final Rect movementBounds =
                        mPipBoundsAlgorithm.getMovementBounds(mLastResizeBounds);
                final int fromLeft = Math.abs(leftEdge - movementBounds.left);
                final int fromRight = Math.abs(movementBounds.right - leftEdge);
                // The PIP will be snapped to either the right or left edge, so calculate which one
                // is closest to the current position.
                final int newLeft = fromLeft < fromRight
                        ? movementBounds.left : movementBounds.right;
                mLastResizeBounds.offsetTo(newLeft, mLastResizeBounds.top);
                final float snapFraction = mPipBoundsAlgorithm.getSnapFraction(
                        mLastResizeBounds, movementBounds);
                mPipBoundsAlgorithm.applySnapFraction(mLastResizeBounds, snapFraction);
                mPipTaskOrganizer.scheduleAnimateResizePip(startBounds, mLastResizeBounds,
                        PINCH_RESIZE_SNAP_DURATION, mAngle, callback);