Fix bug where shade is infinitely squishy after wallpaper change

This change fixes a bug where
opening an empty shade after wallpaper update
=> messes up qs button unfurling
=> hides the "no notifications" text

This bug happened because
=> wallpaper change causes theme change
=> on theme change, NSSLC reinflates EmptyShadeView
   with visibility=false
=> nothing resets EmptyShadeView visiblity=true on shade open
=> AmbientState has 0 visibleChildren during shade open,
   so stackHeight is 0 and expansionFraction is infinity

The solution is to have NSSLC
update EmptyShadeView visibility after re-inflation.

Fixes: 215038354
Fixes: 218501868
Fixes: 218380326
Test: have no notifications, change wallpaper, open shade
     => qs button squishiness animates fine
     => "no notifications" text shows up fine
     => log squishiness: no infinity or NaN

Change-Id: Iaa10605079db7edc79771a1cd9f4cc17f847c4cb
This commit is contained in:
Lyn Han
2022-02-08 12:36:02 -06:00
parent 7315b7278c
commit d2adae5b5d
2 changed files with 6 additions and 1 deletions

View File

@@ -288,11 +288,11 @@ public class NotificationStackScrollLayoutController {
@Override
public void onThemeChanged() {
updateShowEmptyShadeView();
mView.updateCornerRadius();
mView.updateBgColor();
mView.updateDecorViews();
mView.reinflateViews();
updateShowEmptyShadeView();
updateFooter();
}

View File

@@ -376,6 +376,11 @@ public class StackScrollAlgorithm {
final float stackHeight = ambientState.getStackHeight() - shelfHeight - scrimPadding;
final float stackEndHeight = ambientState.getStackEndHeight() - shelfHeight - scrimPadding;
if (stackEndHeight == 0f) {
// This should not happen, since even when the shade is empty we show EmptyShadeView
// but check just in case, so we don't return infinity or NaN.
return 0f;
}
return stackHeight / stackEndHeight;
}