From 56598cd4d3712ea451f8e19e363ae86a51158d3b Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Thu, 15 Sep 2011 16:02:56 -0400 Subject: [PATCH] Fix MENU icon weirdness. (Broken by change I7cbb7bbf.) Bug: 5308636 Change-Id: I30ca20f62bd140a823eb926a9a0521c4d6014680 --- .../statusbar/phone/NavigationBarView.java | 22 +++++++++++++++++-- .../statusbar/phone/PhoneStatusBar.java | 3 +-- 2 files changed, 21 insertions(+), 4 deletions(-) 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 610edfa4b21f2..0b02a7ec2f0e2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -59,7 +59,7 @@ public class NavigationBarView extends LinearLayout { int mBarSize; boolean mVertical; - boolean mHidden, mLowProfile; + boolean mHidden, mLowProfile, mShowMenu; int mDisabledFlags = 0; public View getRecentsButton() { @@ -91,6 +91,7 @@ public class NavigationBarView extends LinearLayout { final Resources res = mContext.getResources(); mBarSize = res.getDimensionPixelSize(R.dimen.navigation_bar_size); mVertical = false; + mShowMenu = false; } View.OnTouchListener mLightsOutListener = new View.OnTouchListener() { @@ -126,7 +127,23 @@ public class NavigationBarView extends LinearLayout { getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE); getHomeButton() .setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE); getRecentsButton().setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE); - getMenuButton() .setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE); + + getMenuButton() .setVisibility((disableNavigation || !mShowMenu) + ? View.INVISIBLE : View.VISIBLE); + } + + public void setMenuVisibility(final boolean show) { + setMenuVisibility(show, false); + } + + public void setMenuVisibility(final boolean show, final boolean force) { + if (!force && mShowMenu == show) return; + + mShowMenu = show; + + getMenuButton().setVisibility( + (0 != (mDisabledFlags & View.STATUS_BAR_DISABLE_NAVIGATION) || !mShowMenu) + ? View.INVISIBLE : View.VISIBLE); } public void setLowProfile(final boolean lightsOut) { @@ -257,6 +274,7 @@ public class NavigationBarView extends LinearLayout { // force the low profile & disabled states into compliance setLowProfile(mLowProfile, false, true /* force */); setDisabledFlags(mDisabledFlags, true /* force */); + setMenuVisibility(mShowMenu, true /* force */); if (DEBUG_DEADZONE) { mCurrentView.findViewById(R.id.deadzone).setBackgroundColor(0x808080FF); 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 febf3ab73c0c1..8fc844882334e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -1572,8 +1572,7 @@ public class PhoneStatusBar extends StatusBar { Slog.d(TAG, (showMenu?"showing":"hiding") + " the MENU button"); } if (mNavigationBarView != null) { - mNavigationBarView.getMenuButton().setVisibility(showMenu - ? View.VISIBLE : View.INVISIBLE); + mNavigationBarView.setMenuVisibility(showMenu); } // See above re: lights-out policy for legacy apps.