Fix MENU icon weirdness. (DO NOT MERGE)

(Broken by change I7cbb7bbf.)

Bug: 5308636
Change-Id: I30ca20f62bd140a823eb926a9a0521c4d6014680
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 7adda00..d260e6d 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 @@
     int mBarSize;
     boolean mVertical;
 
-    boolean mHidden, mLowProfile;
+    boolean mHidden, mLowProfile, mShowMenu;
     int mDisabledFlags = 0;
 
     public View getRecentsButton() {
@@ -91,6 +91,7 @@
         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 @@
         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) {
@@ -256,6 +273,7 @@
         // 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 febf3ab..8fc8448 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 @@
             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.