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

Commit f1f72f65 authored by Winson Chung's avatar Winson Chung
Browse files

Apply minimized offset when fetching new aspect ratio bounds.

Bug: 35091993
Test: Minimize a PiP activity, and then force it to change aspect ratio
Change-Id: I0edafcdefcb68224ca6b476b13819847b6b932d9
parent b454cb88
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ class PinnedStackController {
    private final DisplayMetrics mTmpMetrics = new DisplayMetrics();
    private final Rect mTmpInsets = new Rect();
    private final Rect mTmpRect = new Rect();
    private final Point mTmpDisplaySize = new Point();

    /**
     * The callback object passed to listeners for them to notify the controller of state changes.
@@ -209,6 +210,9 @@ class PinnedStackController {
        final int top = (int) (stackBounds.centerY() - height / 2f);
        stackBounds.set(left, top, left + width, top + height);
        mSnapAlgorithm.applySnapFraction(stackBounds, getMovementBounds(stackBounds), snapFraction);
        if (mIsMinimized) {
            applyMinimizedOffset(stackBounds, getMovementBounds(stackBounds));
        }
        return stackBounds;
    }

@@ -269,11 +273,7 @@ class PinnedStackController {
            mSnapAlgorithm.applySnapFraction(postChangeStackBounds, postChangeMovementBounds,
                    snapFraction);
            if (mIsMinimized) {
                final Point displaySize = new Point(mDisplayInfo.logicalWidth,
                        mDisplayInfo.logicalHeight);
                mService.getStableInsetsLocked(displayContent.getDisplayId(), mStableInsets);
                mSnapAlgorithm.applyMinimizedOffset(postChangeStackBounds, postChangeMovementBounds,
                        displaySize, mStableInsets);
                applyMinimizedOffset(postChangeStackBounds, postChangeMovementBounds);
            }
            notifyMovementBoundsChanged(false /* fromImeAdjustment */);
        }
@@ -386,6 +386,16 @@ class PinnedStackController {
                mDisplayInfo.logicalHeight - mTmpInsets.bottom - mScreenEdgeInsets.y);
    }

    /**
     * Applies the minimized offsets to the given stack bounds.
     */
    private void applyMinimizedOffset(Rect stackBounds, Rect movementBounds) {
        mTmpDisplaySize.set(mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight);
        mService.getStableInsetsLocked(mDisplayContent.getDisplayId(), mStableInsets);
        mSnapAlgorithm.applyMinimizedOffset(stackBounds, movementBounds, mTmpDisplaySize,
                mStableInsets);
    }

    /**
     * @return the pixels for a given dp value.
     */