diff options
author | Lyn Han <lynhan@google.com> | 2022-02-08 12:36:02 -0600 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-02-23 04:11:58 +0000 |
commit | f4b11ee219e5605465e2ff6023b975b0de43c4c5 (patch) | |
tree | 4c8969fe2f49935e74b1e552eb6f8bb26a1c5cfd | |
parent | 97f6cad5b9e90f2d03636358192624bbe8926741 (diff) | |
download | base-f4b11ee219e5605465e2ff6023b975b0de43c4c5.tar.gz |
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
(cherry picked from commit d2adae5b5d8a1b6a77386cc7eaf98dafe4b43ce4)
(cherry picked from commit cf293657bf6520ea04f0c5eab493ad06f1f472f5)
Merged-In:Iaa10605079db7edc79771a1cd9f4cc17f847c4cb
2 files changed, 6 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java index f14cc93c2046..9f440606a365 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutController.java @@ -279,11 +279,11 @@ public class NotificationStackScrollLayoutController { @Override public void onThemeChanged() { - updateShowEmptyShadeView(); mView.updateCornerRadius(); mView.updateBgColor(); mView.updateDecorViews(); mView.reinflateViews(); + updateShowEmptyShadeView(); updateFooter(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java index 2c70a5fd9ce7..c4567df914f0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java @@ -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; } |