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:
@@ -288,11 +288,11 @@ public class NotificationStackScrollLayoutController {
|
||||
|
||||
@Override
|
||||
public void onThemeChanged() {
|
||||
updateShowEmptyShadeView();
|
||||
mView.updateCornerRadius();
|
||||
mView.updateBgColor();
|
||||
mView.updateDecorViews();
|
||||
mView.reinflateViews();
|
||||
updateShowEmptyShadeView();
|
||||
updateFooter();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user