Remove bubble from stack by key instead of icon

Fixes: 152251180
Test: manual - bubbles trimmed on overflow
Test: manual - normal bubble removal still works fine
Change-Id: I19b8fa54f28ae6c959354f4a3a7f4d0e8ed70d44
This commit is contained in:
Lyn Han
2020-03-23 15:48:54 -07:00
parent 2ca22c9805
commit e139557805
2 changed files with 16 additions and 13 deletions

View File

@@ -403,6 +403,9 @@ public class BubbleData {
}
private void doRemove(String key, @DismissReason int reason) {
if (DEBUG_BUBBLE_DATA) {
Log.d(TAG, "doRemove: " + key);
}
// If it was pending remove it
for (int i = 0; i < mPendingBubbles.size(); i++) {
if (mPendingBubbles.get(i).getKey().equals(key)) {
@@ -445,15 +448,14 @@ public class BubbleData {
if (reason == BubbleController.DISMISS_AGED
|| reason == BubbleController.DISMISS_USER_GESTURE) {
if (DEBUG_BUBBLE_DATA) {
Log.d(TAG, "overflowing bubble: " + bubble);
Log.d(TAG, "Overflowing: " + bubble);
}
mOverflowBubbles.add(0, bubble);
bubble.stopInflation();
if (mOverflowBubbles.size() == mMaxOverflowBubbles + 1) {
// Remove oldest bubble.
if (DEBUG_BUBBLE_DATA) {
Log.d(TAG, "Overflow full. Remove bubble: " + mOverflowBubbles.get(
Log.d(TAG, "Overflow full. Remove: " + mOverflowBubbles.get(
mOverflowBubbles.size() - 1));
}
mOverflowBubbles.remove(mOverflowBubbles.size() - 1);

View File

@@ -940,7 +940,6 @@ public class BubbleStackView extends FrameLayout {
ViewClippingUtil.setClippingDeactivated(bubble.getIconView(), true, mClippingParameters);
animateInFlyoutForBubble(bubble);
updatePointerPosition();
updateOverflowBtnVisibility( /*apply */ true);
requestUpdate();
logBubbleEvent(bubble, SysUiStatsLog.BUBBLE_UICHANGED__ACTION__POSTED);
}
@@ -951,16 +950,18 @@ public class BubbleStackView extends FrameLayout {
Log.d(TAG, "removeBubble: " + bubble);
}
// Remove it from the views
int removedIndex = mBubbleContainer.indexOfChild(bubble.getIconView());
if (removedIndex >= 0) {
mBubbleContainer.removeViewAt(removedIndex);
bubble.cleanupExpandedState();
bubble.setInflated(false);
logBubbleEvent(bubble, SysUiStatsLog.BUBBLE_UICHANGED__ACTION__DISMISSED);
} else {
Log.d(TAG, "was asked to remove Bubble, but didn't find the view! " + bubble);
for (int i = 0; i < getBubbleCount(); i++) {
View v = mBubbleContainer.getChildAt(i);
if (v instanceof BadgedImageView
&& ((BadgedImageView) v).getKey().equals(bubble.getKey())) {
mBubbleContainer.removeViewAt(i);
bubble.cleanupExpandedState();
bubble.setInflated(false);
logBubbleEvent(bubble, SysUiStatsLog.BUBBLE_UICHANGED__ACTION__DISMISSED);
return;
}
}
updateOverflowBtnVisibility(/* apply */ true);
Log.d(TAG, "was asked to remove Bubble, but didn't find the view! " + bubble);
}
private void updateOverflowBtnVisibility(boolean apply) {