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

Commit 54743593 authored by Mady Mellor's avatar Mady Mellor
Browse files

Fix dismiss not working in landscape

In stack animation controller only one target would ever
be added so when the target is re-created after rotating
then it wouldn't be used.

Test: - have some bubbles, drag them around, rotate device, try to
        dismiss them => they can be dismissed in landscape
      - get more bubbles, rotate back to portrait, try to dismiss
        them => they can be dismissed in portrait
      - drag the stack around the edges of the screen and verify that
        the only magnetic spot is where the dismiss target is
Fixes: 193008696
Change-Id: I6b24b1f9d301d37749dc67c95392fd6c8451df00
parent ce546939
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -574,19 +574,16 @@ public class BubbleStackView extends FrameLayout
                mBubbleContainer.setActiveController(mStackAnimationController);
                hideFlyoutImmediate();

                if (!mPositioner.showingInTaskbar()) {
                    // Also, save the magnetized stack so we can dispatch touch events to it.
                    mMagnetizedObject = mStackAnimationController.getMagnetizedStack(
                            mMagneticTarget);
                    mMagnetizedObject.setMagnetListener(mStackMagnetListener);
                } else {
                if (mPositioner.showingInTaskbar()) {
                    // In taskbar, the stack isn't draggable so we shouldn't dispatch touch events.
                    mMagnetizedObject = null;
                }

                // Also, save the magnetized stack so we can dispatch touch events to it.
                mMagnetizedObject = mStackAnimationController.getMagnetizedStack(mMagneticTarget);
                } else {
                    // Save the magnetized stack so we can dispatch touch events to it.
                    mMagnetizedObject = mStackAnimationController.getMagnetizedStack();
                    mMagnetizedObject.clearAllTargets();
                    mMagnetizedObject.addTarget(mMagneticTarget);
                    mMagnetizedObject.setMagnetListener(mStackMagnetListener);
                }

                mIsDraggingStack = true;

@@ -865,7 +862,6 @@ public class BubbleStackView extends FrameLayout
                        mRelativeStackPositionBeforeRotation = null;
                    }

                    setUpDismissView();
                    if (mIsExpanded) {
                        // Re-draw bubble row and pointer for new orientation.
                        beforeExpandedViewAnimation();
@@ -1029,10 +1025,9 @@ public class BubbleStackView extends FrameLayout
                contentResolver, "bubble_dismiss_radius", mBubbleSize * 2 /* default */);

        // Save the MagneticTarget instance for the newly set up view - we'll add this to the
        // MagnetizedObjects.
        // MagnetizedObjects when the dismiss view gets shown.
        mMagneticTarget = new MagnetizedObject.MagneticTarget(
                mDismissView.getCircle(), dismissRadius);

        mBubbleContainer.bringToFront();
    }

+2 −5
Original line number Diff line number Diff line
@@ -1024,11 +1024,9 @@ public class StackAnimationController extends
    }

    /**
     * Returns the {@link MagnetizedObject} instance for the bubble stack, with the provided
     * {@link MagnetizedObject.MagneticTarget} added as a target.
     * Returns the {@link MagnetizedObject} instance for the bubble stack.
     */
    public MagnetizedObject<StackAnimationController> getMagnetizedStack(
            MagnetizedObject.MagneticTarget target) {
    public MagnetizedObject<StackAnimationController> getMagnetizedStack() {
        if (mMagnetizedStack == null) {
            mMagnetizedStack = new MagnetizedObject<StackAnimationController>(
                    mLayout.getContext(),
@@ -1053,7 +1051,6 @@ public class StackAnimationController extends
                    loc[1] = (int) mStackPosition.y;
                }
            };
            mMagnetizedStack.addTarget(target);
            mMagnetizedStack.setHapticsEnabled(true);
            mMagnetizedStack.setFlingToTargetMinVelocity(FLING_TO_DISMISS_MIN_VELOCITY);
        }
+7 −0
Original line number Diff line number Diff line
@@ -302,6 +302,13 @@ abstract class MagnetizedObject<T : Any>(
        associatedTargets.remove(target)
    }

    /**
     * Removes all associated targets from this object.
     */
    fun clearAllTargets() {
        associatedTargets.clear()
    }

    /**
     * Provide this method with all motion events that move the magnetized object. If the
     * location of the motion events moves within the magnetic field of a target, or indicate a