diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 1a6dd12431d3d..51ff29e109649 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -65,6 +65,7 @@ public class NavigationBarView extends LinearLayout { boolean mVertical; boolean mScreenOn; + private int mCurrentRotation = -1; boolean mShowMenu; int mDisabledFlags = 0; @@ -526,6 +527,10 @@ public class NavigationBarView extends LinearLayout { updateCurrentView(); } + public boolean needsReorient() { + return mCurrentRotation != mDisplay.getRotation(); + } + private void updateCurrentView() { final int rot = mDisplay.getRotation(); for (int i=0; i<4; i++) { @@ -538,6 +543,7 @@ public class NavigationBarView extends LinearLayout { mButtonDisatchers.valueAt(i).setCurrentView(mCurrentView); } updateLayoutTransitionsEnabled(); + mCurrentRotation = rot; } private void updateRecentsIcon() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 4f34ec2029a51..dc7921b742b7e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -3553,7 +3553,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, @Override public void onDisplayChanged(int displayId) { - if (displayId == Display.DEFAULT_DISPLAY) { + if (displayId == Display.DEFAULT_DISPLAY + && mNavigationBarView != null && mNavigationBarView.needsReorient()) { repositionNavigationBar(); } }