From 305cfd268357ca4eb1b1c36e9f6f71aed9fca61a Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Thu, 3 Jun 2021 12:26:08 -0700 Subject: [PATCH] Fix dot & badge being on correct side for the first bubble added * stackAnimationController#isStackOnLeftSide depends on the position being set which happens when a view gets added so we should add the view & then set mStackOnLeftOrWillBe * removed unused code Test: manual 1) have no bubbles 2) add a bubble (needs to be on left side -- this is the default unless you've placed the stack on right side beforehand) => observe that the update dot & badge are on the right hand side of the bubble Bug: 185438888 Change-Id: I6129aff7c352fad8d29a6c243549f0d3580d62c8 --- .../android/wm/shell/bubbles/BubbleStackView.java | 14 +++++++------- .../animation/StackAnimationController.java | 3 --- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index 7b92713268e7d..e5ffe91aebbe5 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -1497,22 +1497,22 @@ public class BubbleStackView extends FrameLayout mStackAnimationController.setStackPosition(mPositioner.getDefaultStartPosition()); } - if (getBubbleCount() == 0) { - mStackOnLeftOrWillBe = mStackAnimationController.isStackOnLeftSide(); - } - if (bubble.getIconView() == null) { return; } + mBubbleContainer.addView(bubble.getIconView(), 0, + new FrameLayout.LayoutParams(mPositioner.getBubbleSize(), + mPositioner.getBubbleSize())); + + if (getBubbleCount() == 0) { + mStackOnLeftOrWillBe = mStackAnimationController.isStackOnLeftSide(); + } // Set the dot position to the opposite of the side the stack is resting on, since the stack // resting slightly off-screen would result in the dot also being off-screen. bubble.getIconView().setDotBadgeOnLeft(!mStackOnLeftOrWillBe /* onLeft */); bubble.getIconView().setOnClickListener(mBubbleClickListener); bubble.getIconView().setOnTouchListener(mBubbleTouchListener); - mBubbleContainer.addView(bubble.getIconView(), 0, - new FrameLayout.LayoutParams(mPositioner.getBubbleSize(), - mPositioner.getBubbleSize())); updateBubbleShadows(false /* showForAllBubbles */); animateInFlyoutForBubble(bubble); requestUpdate(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java index 8043d2b8b2f92..12d55b85fac6a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/animation/StackAnimationController.java @@ -124,9 +124,6 @@ public class StackAnimationController extends */ private Rect mAnimatingToBounds = new Rect(); - /** Initial starting location for the stack. */ - @Nullable private BubbleStackView.RelativeStackPosition mStackStartPosition; - /** Whether or not the stack's start position has been set. */ private boolean mStackMovedToStartPosition = false;