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

Commit 6827e13a authored by Mady Mellor's avatar Mady Mellor
Browse files

Skip onTaskMovedToFront if the bubble selection is animating

When a bubble gets dismissed while the stack is expanded, we should
select the next available bubble. Instead, we are collapsing.
This is because we get an onTaskMovedToFront event for the app
behind bubbles moving to the front, which causes the stack to
collapse. To fix this I add a check to see if the switch animation
is running, and if so we skip the collapse in onTaskMovedToFront.

Bug: 208648025
Test: manual - have multiple bubbles, expand the stack, visit each
               bubble
             - dismiss each bubble by dragging to dismiss target
             => observe that after dismissing each bubble, the next
                bubble is selected (if available)
Change-Id: If82c004ecd1ec8920e934dbae2107b4c37853cb5
parent 83464b43
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -385,7 +385,9 @@ public class BubbleController {
                mMainExecutor.execute(() -> {
                    int expandedId = INVALID_TASK_ID;
                    if (mStackView != null && mStackView.getExpandedBubble() != null
                            && isStackExpanded() && !mStackView.isExpansionAnimating()) {
                            && isStackExpanded()
                            && !mStackView.isExpansionAnimating()
                            && !mStackView.isSwitchAnimating()) {
                        expandedId = mStackView.getExpandedBubble().getTaskId();
                    }
                    if (expandedId != INVALID_TASK_ID && expandedId != taskId) {
+11 −0
Original line number Diff line number Diff line
@@ -1607,6 +1607,13 @@ public class BubbleStackView extends FrameLayout
        return mIsExpansionAnimating;
    }

    /**
     * Whether the stack of bubbles is animating a switch between bubbles.
     */
    public boolean isSwitchAnimating() {
        return mIsBubbleSwitchAnimating;
    }

    /**
     * The {@link Bubble} that is expanded, null if one does not exist.
     */
@@ -2467,6 +2474,10 @@ public class BubbleStackView extends FrameLayout

    private void dismissBubbleIfExists(@Nullable BubbleViewProvider bubble) {
        if (bubble != null && mBubbleData.hasBubbleInStackWithKey(bubble.getKey())) {
            if (mIsExpanded && mBubbleData.getBubbles().size() > 1) {
                // If we have more than 1 bubble we will perform the switch animation
                mIsBubbleSwitchAnimating = true;
            }
            mBubbleData.dismissBubbleWithKey(bubble.getKey(), Bubbles.DISMISS_USER_GESTURE);
        }
    }