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

Commit 50ee3ce8 authored by Mady Mellor's avatar Mady Mellor
Browse files

Fix an issue where stack education and the stack weren't aligned

On rotation the stack position is updated using the relative stack
position based on the last resting position. This doesn't work well
with the user education which relies on the stack being in the
"default" position & updating to the relative position clobbers this.
This change updates it so that:

1 - when the stack user education is shown it always updates the
    stack to be in the default position
2 - if stack user education is showing, don't set the stack position

Bug: 223635730
Test: manual - rotate device with stack user education showing and
               make sure the stack is aligned with the education view
Change-Id: I232227aed29ceef060883ed60ed02563093a9bbb
parent 9052b5c2
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -899,7 +899,7 @@ public class BubbleStackView extends FrameLayout
                    mStackAnimationController.updateResources();
                    mBubbleOverflow.updateResources();

                    if (mRelativeStackPositionBeforeRotation != null) {
                    if (!isStackEduShowing() && mRelativeStackPositionBeforeRotation != null) {
                        mStackAnimationController.setStackPosition(
                                mRelativeStackPositionBeforeRotation);
                        mRelativeStackPositionBeforeRotation = null;
@@ -1193,6 +1193,8 @@ public class BubbleStackView extends FrameLayout
            addView(mStackEduView);
        }
        mBubbleContainer.bringToFront();
        // Ensure the stack is in the correct spot
        mStackAnimationController.setStackPosition(mPositioner.getDefaultStartPosition());
        return mStackEduView.show(mPositioner.getDefaultStartPosition());
    }

@@ -1207,6 +1209,8 @@ public class BubbleStackView extends FrameLayout
            mStackEduView = new StackEducationView(mContext, mPositioner, mBubbleController);
            addView(mStackEduView);
            mBubbleContainer.bringToFront(); // Stack appears on top of the stack education
            // Ensure the stack is in the correct spot
            mStackAnimationController.setStackPosition(mPositioner.getDefaultStartPosition());
            mStackEduView.show(mPositioner.getDefaultStartPosition());
        }
        if (mManageEduView != null && mManageEduView.getVisibility() == VISIBLE) {
@@ -1324,10 +1328,12 @@ public class BubbleStackView extends FrameLayout
        mStackAnimationController.updateResources();
        mDismissView.updateResources();
        mMagneticTarget.setMagneticFieldRadiusPx(mBubbleSize * 2);
        if (!isStackEduShowing()) {
            mStackAnimationController.setStackPosition(
                    new RelativeStackPosition(
                            mPositioner.getRestingPosition(),
                            mStackAnimationController.getAllowableStackPositionRegion()));
        }
        if (mIsExpanded) {
            updateExpandedView();
        }
+1 −1
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ class StackEducationView constructor(
     * If necessary, shows the user education view for the bubble stack. This appears the first
     * time a user taps on a bubble.
     *
     * @return true if user education was shown, false otherwise.
     * @return true if user education was shown and wasn't showing before, false otherwise.
     */
    fun show(stackPosition: PointF): Boolean {
        isHiding = false