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

Commit 845205c0 authored by Jorge Gil's avatar Jorge Gil Committed by Android (Google) Code Review
Browse files

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

parents 671019f9 ef11620c
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);