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

Commit d29271dc authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix issues with bubbles crashing/removing during expansion." into rvc-dev am: 7bf84ecb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11960744

Change-Id: I391c5bf1f2cadbe48620ee49423576a9261099c4
parents 10795b82 7bf84ecb
Loading
Loading
Loading
Loading
+50 −29
Original line number Diff line number Diff line
@@ -1554,6 +1554,14 @@ public class BubbleStackView extends FrameLayout
            mBubbleData.setShowingOverflow(true);
        }

        if (mIsExpanded && mIsExpansionAnimating) {
            // If the bubble selection changed during the expansion animation, the expanding bubble
            // probably crashed or immediately removed itself (or, we just got unlucky with a new
            // auto-expanding bubble showing up at just the right time). Cancel the animations so we
            // can start fresh.
            cancelAllExpandCollapseSwitchAnimations();
        }

        // If we're expanded, screenshot the currently expanded bubble (before expanding the newly
        // selected bubble) so we can animate it out.
        if (mIsExpanded && mExpandedBubble != null && mExpandedBubble.getExpandedView() != null) {
@@ -1879,7 +1887,8 @@ public class BubbleStackView extends FrameLayout
            mExpandedBubble.getExpandedView().setSurfaceZOrderedOnTop(false);
        }

        mDelayedAnimationHandler.postDelayed(() ->
        mDelayedAnimationHandler.postDelayed(() -> {
            PhysicsAnimator.getInstance(mExpandedViewContainerMatrix).cancel();
            PhysicsAnimator.getInstance(mExpandedViewContainerMatrix)
                    .spring(AnimatableScaleMatrix.SCALE_X,
                            AnimatableScaleMatrix.getAnimatableValueForScaleFactor(1f),
@@ -1907,7 +1916,8 @@ public class BubbleStackView extends FrameLayout
                                    .setSurfaceZOrderedOnTop(false);
                        }
                    })
                                .start(), startDelay);
                    .start();
        }, startDelay);
    }

    private void animateCollapse() {
@@ -2035,6 +2045,7 @@ public class BubbleStackView extends FrameLayout
                return;
            }

            PhysicsAnimator.getInstance(mExpandedViewContainerMatrix).cancel();
            PhysicsAnimator.getInstance(mExpandedViewContainerMatrix)
                    .spring(AnimatableScaleMatrix.SCALE_X,
                            AnimatableScaleMatrix.getAnimatableValueForScaleFactor(1f),
@@ -2068,6 +2079,15 @@ public class BubbleStackView extends FrameLayout
        mIsBubbleSwitchAnimating = false;
    }

    private void cancelAllExpandCollapseSwitchAnimations() {
        cancelDelayedExpandCollapseSwitchAnimations();

        PhysicsAnimator.getInstance(mAnimatingOutSurfaceView).cancel();
        PhysicsAnimator.getInstance(mExpandedViewContainerMatrix).cancel();

        mExpandedViewContainer.setAnimationMatrix(null);
    }

    private void notifyExpansionChanged(BubbleViewProvider bubble, boolean expanded) {
        if (mExpandListener != null && bubble != null) {
            mExpandListener.onBubbleExpandChanged(expanded, bubble.getKey());
@@ -2587,6 +2607,7 @@ public class BubbleStackView extends FrameLayout
            bev.setContentVisibility(false);
            mExpandedViewContainerMatrix.setScaleX(0f);
            mExpandedViewContainerMatrix.setScaleY(0f);
            mExpandedViewContainerMatrix.setTranslate(0f, 0f);
            mExpandedViewContainer.setVisibility(View.INVISIBLE);
            mExpandedViewContainer.setAlpha(0f);
            mExpandedViewContainer.addView(bev);
+4 −0
Original line number Diff line number Diff line
@@ -237,6 +237,10 @@ public class ExpandedAnimationController
                }

                mAfterExpand = null;

                // Update bubble positions in case any bubbles were added or removed during the
                // expansion animation.
                updateBubblePositions();
            };
        } else {
            after = () -> {