Merge "Fix crash when opening overflow after dismissing stack" into rvc-dev am: 552c77d53a

Change-Id: Id754bebc76091bea28da5a485a96d4149dce8569
This commit is contained in:
TreeHugger Robot
2020-05-28 03:58:38 +00:00
committed by Automerger Merge Worker
4 changed files with 20 additions and 18 deletions

View File

@@ -657,7 +657,13 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
try { try {
mAddedToWindowManager = false; mAddedToWindowManager = false;
mWindowManager.removeView(mStackView); if (mStackView != null) {
mWindowManager.removeView(mStackView);
mStackView.removeView(mBubbleScrim);
mStackView = null;
} else {
Log.w(TAG, "StackView added to WindowManager, but was null when removing!");
}
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
// This means the stack has already been removed - it shouldn't happen, but ignore if it // This means the stack has already been removed - it shouldn't happen, but ignore if it
// does, since we wanted it removed anyway. // does, since we wanted it removed anyway.

View File

@@ -306,7 +306,9 @@ public class BubbleExpandedView extends LinearLayout {
* if a view has been added or removed from on top of the ActivityView, such as the manage menu. * if a view has been added or removed from on top of the ActivityView, such as the manage menu.
*/ */
void updateObscuredTouchableRegion() { void updateObscuredTouchableRegion() {
mActivityView.onLocationChanged(); if (mActivityView != null) {
mActivityView.onLocationChanged();
}
} }
void applyThemeAttrs() { void applyThemeAttrs() {

View File

@@ -129,7 +129,7 @@ public class BubbleOverflow implements BubbleViewProvider {
return mOverflowBtn; return mOverflowBtn;
} }
void setBtnVisible(int visible) { void setVisible(int visible) {
mOverflowBtn.setVisibility(visible); mOverflowBtn.setVisibility(visible);
} }

View File

@@ -1117,6 +1117,9 @@ public class BubbleStackView extends FrameLayout
super.onDetachedFromWindow(); super.onDetachedFromWindow();
getViewTreeObserver().removeOnPreDrawListener(mViewUpdater); getViewTreeObserver().removeOnPreDrawListener(mViewUpdater);
getViewTreeObserver().removeOnComputeInternalInsetsListener(this); getViewTreeObserver().removeOnComputeInternalInsetsListener(this);
if (mBubbleOverflow != null && mBubbleOverflow.getExpandedView() != null) {
mBubbleOverflow.getExpandedView().cleanUpExpandedState();
}
} }
@Override @Override
@@ -1334,21 +1337,12 @@ public class BubbleStackView extends FrameLayout
Log.d(TAG, "was asked to remove Bubble, but didn't find the view! " + bubble); Log.d(TAG, "was asked to remove Bubble, but didn't find the view! " + bubble);
} }
private void updateOverflowBtnVisibility() { private void updateOverflowVisibility() {
if (!BubbleExperimentConfig.allowBubbleOverflow(mContext)) { if (!BubbleExperimentConfig.allowBubbleOverflow(mContext)
|| mBubbleOverflow == null) {
return; return;
} }
if (mIsExpanded) { mBubbleOverflow.setVisible(mIsExpanded ? VISIBLE : GONE);
if (DEBUG_BUBBLE_STACK_VIEW) {
Log.d(TAG, "Show overflow button.");
}
mBubbleOverflow.setBtnVisible(VISIBLE);
} else {
if (DEBUG_BUBBLE_STACK_VIEW) {
Log.d(TAG, "Collapsed. Hide overflow button.");
}
mBubbleOverflow.setBtnVisible(GONE);
}
} }
// via BubbleData.Listener // via BubbleData.Listener
@@ -1602,7 +1596,7 @@ public class BubbleStackView extends FrameLayout
Log.d(TAG, BubbleDebugConfig.formatBubblesString(getBubblesOnScreen(), Log.d(TAG, BubbleDebugConfig.formatBubblesString(getBubblesOnScreen(),
mExpandedBubble)); mExpandedBubble));
} }
updateOverflowBtnVisibility(); updateOverflowVisibility();
mBubbleContainer.cancelAllAnimations(); mBubbleContainer.cancelAllAnimations();
mExpandedAnimationController.collapseBackToStack( mExpandedAnimationController.collapseBackToStack(
mStackAnimationController.getStackPositionAlongNearestHorizontalEdge() mStackAnimationController.getStackPositionAlongNearestHorizontalEdge()
@@ -1626,7 +1620,7 @@ public class BubbleStackView extends FrameLayout
beforeExpandedViewAnimation(); beforeExpandedViewAnimation();
mBubbleContainer.setActiveController(mExpandedAnimationController); mBubbleContainer.setActiveController(mExpandedAnimationController);
updateOverflowBtnVisibility(); updateOverflowVisibility();
mExpandedAnimationController.expandFromStack(() -> { mExpandedAnimationController.expandFromStack(() -> {
updatePointerPosition(); updatePointerPosition();
afterExpandedViewAnimation(); afterExpandedViewAnimation();