fix tab switcher and menu

Change-Id: Ibcda8fc9fa73f11dba7d8f2f8061740910cedc55
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 2da0424..7e367a4 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -46,6 +46,7 @@
     private View mMore;
     private Drawable mTextfieldBgDrawable;
     private PopupMenu mPopupMenu;
+    private boolean mMenuShowing;
     private boolean mNeedsMenu;
 
     public NavigationBarPhone(Context context) {
@@ -154,7 +155,7 @@
         } else if (v == mVoiceButton) {
             mUiController.startVoiceSearch();
         } else if (v == mTabSwitcher) {
-            mBaseUi.onMenuKey();
+            ((PhoneUi) mBaseUi).toggleNavScreen();
         } else if (mMore == v) {
             showMenu(mMore);
         } else {
@@ -163,15 +164,35 @@
     }
 
     public boolean isMenuShowing() {
-        return (mPopupMenu != null);
+        return mMenuShowing;
     }
 
     void showMenu() {
         // called from menu key, use tab switcher as anchor
-        showMenu(mTabSwitcher);
+        mMenuShowing = true;
+        if (isEditingUrl()) {
+            stopEditingUrl();
+            post(new Runnable() {
+                @Override
+                public void run() {
+                    showMenu();
+                }
+            });
+        } else {
+            mBaseUi.getTitleBar().setSkipTitleBarAnimations(true);
+            mBaseUi.showTitleBar();
+            mBaseUi.getTitleBar().setSkipTitleBarAnimations(false);
+            post(new Runnable() {
+                @Override
+                public void run() {
+                    showMenu(mTabSwitcher);
+                }
+            });
+        }
     }
 
     void showMenu(View anchor) {
+        mMenuShowing = true;
         mPopupMenu = new PopupMenu(mContext, anchor);
         Menu menu = mPopupMenu.getMenu();
         mPopupMenu.getMenuInflater().inflate(R.menu.browser, menu);
@@ -184,6 +205,7 @@
     void dismissMenu() {
        if (mPopupMenu != null) {
            mPopupMenu.dismiss();
+           mBaseUi.suggestHideTitleBar();
        }
     }
 
@@ -203,6 +225,7 @@
     }
 
     private void onMenuHidden() {
+        mMenuShowing = false;
         mPopupMenu = null;
         mBaseUi.showTitleBarForDuration();
     }
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 99320b7..9e3310b 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -263,4 +263,12 @@
         return false;
     }
 
+    public void toggleNavScreen() {
+        if (mNavScreen == null) {
+            showNavScreen();
+        } else {
+            hideNavScreen(false);
+        }
+    }
+
 }