From edf7483fdf6b9174ea529b224ca10bbe432ebf84 Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 7 Jul 2020 14:28:43 -0400 Subject: [PATCH] Fix customizer state QSFragment uses QSCustomizer#isCustomizing to determine what to show. isCustomizing() = mCustomizing || mOpening. Before this CL, if the customizer was hidden before it was fully opened, it would thing it was still opening and QS would not be updated correctly. Test: manual Fixes: 160509272 Change-Id: Iec9c896621502a1825f717f733b24bde2fe22509 --- .../src/com/android/systemui/qs/QSDetailClipper.java | 9 +++++++++ .../com/android/systemui/qs/customize/QSCustomizer.java | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java index c454048d06493..daf8ca324c740 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java @@ -104,4 +104,13 @@ public class QSDetailClipper { public void showBackground() { mBackground.showSecondLayer(); } + + /** + * Cancels the animator if it's running. + */ + public void cancelAnimator() { + if (mAnimator != null) { + mAnimator.cancel(); + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java index 3e2f9dec58075..e5ed88c10a2e4 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java @@ -208,6 +208,7 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene public void showImmediately() { if (!isShown) { setVisibility(VISIBLE); + mClipper.cancelAnimator(); mClipper.showBackground(); isShown = true; setTileSpecs(); @@ -230,6 +231,10 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene mUiEventLogger.log(QSEditEvent.QS_EDIT_CLOSED); isShown = false; mToolbar.dismissPopupMenus(); + mClipper.cancelAnimator(); + // Make sure we're not opening (because we're closing). Nobody can think we are + // customizing after the next two lines. + mOpening = false; setCustomizing(false); save(); if (animate) {