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..9cd007ee93120 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java @@ -317,7 +317,7 @@ public class NavigationBarView extends FrameLayout { R.drawable.ic_sysbar_rotate_button_ccw_start_90, R.drawable.ic_sysbar_rotate_button_cw_start_0, R.drawable.ic_sysbar_rotate_button_cw_start_90, - () -> getDisplay().getRotation()); + () -> mCurrentRotation); mConfiguration = new Configuration(); mTmpLastConfiguration = new Configuration(); @@ -538,6 +538,7 @@ public class NavigationBarView extends FrameLayout { mRotationButtonController.setRotationButton(mRotationContextButton, mRotationButtonListener); } + mNavigationInflaterView.setButtonDispatchers(mButtonDispatchers); } public KeyButtonDrawable getBackDrawable() { @@ -978,15 +979,27 @@ public class NavigationBarView extends FrameLayout { return mCurrentRotation != rotation; } + private void updateCurrentRotation() { + final int rotation = mConfiguration.windowConfiguration.getDisplayRotation(); + if (mCurrentRotation == rotation) { + return; + } + mCurrentRotation = rotation; + mNavigationInflaterView.setAlternativeOrder(mCurrentRotation == Surface.ROTATION_90); + mDeadZone.onConfigurationChanged(mCurrentRotation); + if (DEBUG) { + Log.d(TAG, "updateCurrentRotation(): rot=" + mCurrentRotation); + } + } + private void updateCurrentView() { resetViews(); mCurrentView = mIsVertical ? mVertical : mHorizontal; mCurrentView.setVisibility(View.VISIBLE); mNavigationInflaterView.setVertical(mIsVertical); - mCurrentRotation = getContextDisplay().getRotation(); - mNavigationInflaterView.setAlternativeOrder(mCurrentRotation == Surface.ROTATION_90); mNavigationInflaterView.updateButtonDispatchersCurrentView(); updateLayoutTransitionsEnabled(); + updateCurrentRotation(); } private void resetViews() { @@ -1019,17 +1032,11 @@ public class NavigationBarView extends FrameLayout { public void reorient() { updateCurrentView(); - ((NavigationBarFrame) getRootView()).setDeadZone(mDeadZone); - mDeadZone.onConfigurationChanged(mCurrentRotation); // force the low profile & disabled states into compliance mBarTransitions.init(); - if (DEBUG) { - Log.d(TAG, "reorient(): rot=" + mCurrentRotation); - } - // Resolve layout direction if not resolved since components changing layout direction such // as changing languages will recreate this view and the direction will be resolved later if (!isLayoutDirectionResolved()) { @@ -1100,6 +1107,7 @@ public class NavigationBarView extends FrameLayout { boolean uiCarModeChanged = updateCarMode(); updateIcons(mTmpLastConfiguration); updateRecentsIcon(); + updateCurrentRotation(); mEdgeBackGestureHandler.onConfigurationChanged(mConfiguration); if (uiCarModeChanged || mTmpLastConfiguration.densityDpi != mConfiguration.densityDpi || mTmpLastConfiguration.getLayoutDirection() != mConfiguration.getLayoutDirection()) {