From 090b7d82d254439d0131de51fed4e0d10571bddb Mon Sep 17 00:00:00 2001 From: Adrian Roos Date: Tue, 2 Aug 2016 18:36:12 -0700 Subject: [PATCH] Only reorient nav bar if needed Bug: 30388298 Change-Id: Ifda69682fd00ed11ce21b439d12d3b432db1eca7 --- .../android/systemui/statusbar/phone/NavigationBarView.java | 6 ++++++ .../android/systemui/statusbar/phone/PhoneStatusBar.java | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) 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 23aeae8c5b332..e651017e6125f 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 b623f19b5ccb3..06202ee886648 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -3548,7 +3548,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(); } }