diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index 246235a..248f57f 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -40,6 +40,7 @@
 import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.View.OnFocusChangeListener;
@@ -135,6 +136,16 @@
         mDefaultFavicon = BitmapFactory.decodeResource(getResources(),
                 R.drawable.ic_deco_favicon_normal);
 
+        mMore.setOnTouchListener(new OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                if (event.getAction() == MotionEvent.ACTION_DOWN) {
+                    showMenu(mMore);
+                }
+                return true;
+            }
+        });
+
         mHandler = new Handler() {
             @Override
             public void handleMessage(Message m) {
@@ -360,12 +371,12 @@
             url = currentTab.getUrl();
         }
 
-        if (mMore == v) {
-            showMenu(mMore);
-        } else if (mFaviconTile == v) {
-            if (urlHasSitePrefs(url) && (wv != null && !wv.isShowingInterstitialPage()) ){
+        if (mFaviconTile == v) {
+            if (urlHasSitePrefs(url) && (wv != null && !wv.isShowingInterstitialPage())) {
                 showSiteSpecificSettings();
             }
+        } else if (mMore == v) {
+            showMenu(mMore);
         } else if (mVoiceButton == v) {
             mUiController.startVoiceRecognizer();
         } else if (mStopButton == v) {
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 5fa093b..9abc356 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -18,6 +18,7 @@
 import android.content.Context;
 import android.util.AttributeSet;
 import android.util.TypedValue;
+import android.view.MotionEvent;
 import android.view.View;
 
 import org.codeaurora.swe.util.Activator;
@@ -57,6 +58,16 @@
         mUrlInput.setStateListener(this);
         mIncognitoIcon = findViewById(R.id.incognito_icon);
 
+        mTabSwitcher.setOnTouchListener(new OnTouchListener() {
+            @Override
+            public boolean onTouch(View v, MotionEvent event) {
+                if (event.getAction() == MotionEvent.ACTION_DOWN) {
+                    ((PhoneUi) mBaseUi).toggleNavScreen();
+                }
+                return true;
+            }
+        });
+
         if (mTabSwitcherInitialTextSize == 0) {
             mTabSwitcherInitialTextSize = mTabText.getTextSize();
             mTabSwitcherCompressedTextSize = (float) (mTabSwitcherInitialTextSize / 1.2);
