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

Commit e01abc47 authored by Mady Mellor's avatar Mady Mellor Committed by Android (Google) Code Review
Browse files

Merge "Fix bubbles being on the wrong side after fold -> unfold" into main

parents 23e028aa 3ac5d4e8
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -164,6 +164,25 @@ class BubblePositionerTest {
        assertThat(startPosition.y).isEqualTo(defaultYPosition)
    }

    @Test
    fun testGetRestingPosition_afterBoundsChange() {
        positioner.update(defaultDeviceConfig.copy(isLargeScreen = true,
                windowBounds = Rect(0, 0, 2000, 1600)))

        // Set the resting position to the right side
        var allowableStackRegion = positioner.getAllowableStackPositionRegion(1 /* bubbleCount */)
        val restingPosition = PointF(allowableStackRegion.right, allowableStackRegion.centerY())
        positioner.restingPosition = restingPosition

        // Now make the device smaller
        positioner.update(defaultDeviceConfig.copy(isLargeScreen = false,
                windowBounds = Rect(0, 0, 1000, 1600)))

        // Check the resting position is on the correct side
        allowableStackRegion = positioner.getAllowableStackPositionRegion(1 /* bubbleCount */)
        assertThat(positioner.restingPosition.x).isEqualTo(allowableStackRegion.right)
    }

    @Test
    fun testHasUserModifiedDefaultPosition_false() {
        positioner.update(defaultDeviceConfig.copy(isLargeScreen = true, isRtl = true))
+13 −0
Original line number Diff line number Diff line
@@ -120,6 +120,13 @@ public class BubblePositioner {

    @VisibleForTesting
    public void updateInternal(int rotation, Insets insets, Rect bounds) {
        BubbleStackView.RelativeStackPosition prevStackPosition = null;
        if (mRestingStackPosition != null && mScreenRect != null && !mScreenRect.equals(bounds)) {
            // Save the resting position as a relative position with the previous bounds, at the
            // end of the update we'll restore it based on the new bounds.
            prevStackPosition = new BubbleStackView.RelativeStackPosition(getRestingPosition(),
                    getAllowableStackPositionRegion(1));
        }
        mRotation = rotation;
        mInsets = insets;

@@ -182,6 +189,12 @@ public class BubblePositioner {
                R.dimen.bubbles_flyout_min_width_large_screen);

        mMaxBubbles = calculateMaxBubbles();

        if (prevStackPosition != null) {
            // Get the new resting position based on the updated values
            mRestingStackPosition = prevStackPosition.getAbsolutePositionInRegion(
                    getAllowableStackPositionRegion(1));
        }
    }

    /**