From 446df44b6e0c85e869fe69567952b6a98bf6cb57 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Tue, 10 May 2022 06:01:14 +0000 Subject: [PATCH] Refill all the dispatcher views when updating rotation - Due to a change in ordering, the button dispatcher list is not complete until after inflation and the nav bar controller notifies the view of the current nav mode. When this happens and the rotation button is updated, also update the list of views in the dispatcher list. Bug: 229708157 Test: Enabled 3 button, kill SysUI, rotate and verify button shows Change-Id: I20171f31cc485eb41a0def841e4b89b761bb63f2 --- .../systemui/navigationbar/NavigationBarInflaterView.java | 7 ++++++- .../android/systemui/navigationbar/NavigationBarView.java | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java index 4d9175b8db686..59bb2278edfea 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java @@ -168,6 +168,7 @@ public class NavigationBarInflaterView extends FrameLayout public void setButtonDispatchers(SparseArray buttonDispatchers) { mButtonDispatchers = buttonDispatchers; + clearDispatcherViews(); for (int i = 0; i < buttonDispatchers.size(); i++) { initiallyFill(buttonDispatchers.valueAt(i)); } @@ -454,12 +455,16 @@ public class NavigationBarInflaterView extends FrameLayout } } - private void clearViews() { + private void clearDispatcherViews() { if (mButtonDispatchers != null) { for (int i = 0; i < mButtonDispatchers.size(); i++) { mButtonDispatchers.valueAt(i).clear(); } } + } + + private void clearViews() { + clearDispatcherViews(); clearAllChildren(mHorizontal.findViewById(R.id.nav_buttons)); clearAllChildren(mVertical.findViewById(R.id.nav_buttons)); } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java index a13c199df41e0..d4539e2976ccf 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java @@ -538,6 +538,7 @@ public class NavigationBarView extends FrameLayout { mRotationButtonController.setRotationButton(mRotationContextButton, mRotationButtonListener); } + mNavigationInflaterView.setButtonDispatchers(mButtonDispatchers); } public KeyButtonDrawable getBackDrawable() {