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

Commit 61059302 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...

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

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

Change-Id: I194ab72ccb677450209f4f6bf9d7940b2ea8d56f
parents 60524abb f18f6b62
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);