use system menu
On phones with hardware menu key, use the framework's
menu
Also fixes:
Bug: 5051899
remove overflow button from bar if menu key is present
Nav options are not visible on tab switcher
Change-Id: I5b55934a392a76f9d9ef16e3bf5c71f27b88d69a
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index d1445d8..b270dea 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -35,6 +35,7 @@
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
+import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
@@ -653,6 +654,11 @@
}
@Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ return false;
+ }
+
+ @Override
public void onOptionsMenuClosed(boolean inLoad) {
}
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 9b81870..8a4433e 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1512,6 +1512,10 @@
// won't get onKeyUp for MENU. So it is important to reset it here.
mMenuIsDown = false;
}
+ if (mUi.onOptionsItemSelected(item)) {
+ // ui callback handled it
+ return true;
+ }
switch (item.getItemId()) {
// -- Main menu
case R.id.new_tab_menu_id:
@@ -2462,10 +2466,6 @@
boolean noModifiers = event.hasNoModifiers();
// Even if MENU is already held down, we need to call to super to open
// the IME on long press.
- if (KeyEvent.KEYCODE_MENU == keyCode) {
- event.startTracking();
- return true;
- }
if (!noModifiers
&& ((KeyEvent.KEYCODE_MENU == keyCode)
|| (KeyEvent.KEYCODE_CTRL_LEFT == keyCode)
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
index 23317b5..ee20535 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -23,6 +23,7 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewConfiguration;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebView;
@@ -59,6 +60,7 @@
NavTabGallery mScroller;
TabAdapter mAdapter;
int mOrientation;
+ boolean mNeedsMenu;
public NavScreen(Activity activity, UiController ctl, PhoneUi ui) {
super(activity);
@@ -122,6 +124,10 @@
? LinearLayout.HORIZONTAL : LinearLayout.VERTICAL);
// update state for active tab
mScroller.setSelection(mUiController.getTabControl().getTabPosition(mUi.getActiveTab()));
+ mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey();
+ if (!mNeedsMenu) {
+ mMore.setVisibility(View.GONE);
+ }
}
@Override
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 2030169..400b695 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -167,30 +167,6 @@
return mMenuShowing;
}
- void showMenu() {
- // called from menu key, use tab switcher as anchor
- 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);
@@ -202,13 +178,6 @@
mPopupMenu.show();
}
- void dismissMenu() {
- if (mPopupMenu != null) {
- mPopupMenu.dismiss();
- mBaseUi.suggestHideTitleBar();
- }
- }
-
@Override
public void onDismiss(PopupMenu menu) {
onMenuHidden();
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 9e3310b..28db6f0 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -23,6 +23,7 @@
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.widget.FrameLayout;
@@ -78,16 +79,6 @@
}
@Override
- public boolean onMenuKey() {
- if (mNavigationBar.isMenuShowing()) {
- mNavigationBar.dismissMenu();
- } else {
- mNavigationBar.showMenu();
- }
- return true;
- }
-
- @Override
public boolean dispatchKey(int code, KeyEvent event) {
return false;
}
@@ -169,6 +160,20 @@
// menu handling callbacks
@Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ menu.setGroupVisible(R.id.NAV_MENU, (mNavScreen == null));
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (mNavScreen != null) {
+ hideNavScreen(false);
+ }
+ return false;
+ }
+
+ @Override
public void onContextMenuCreated(Menu menu) {
hideTitleBar();
}
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 4b58872..23897f7 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -22,6 +22,7 @@
import android.view.ActionMode;
import android.view.KeyEvent;
import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.webkit.WebView;
@@ -102,6 +103,8 @@
public void onExtendedMenuOpened();
+ public boolean onOptionsItemSelected(MenuItem item);
+
public void onOptionsMenuClosed(boolean inLoad);
public void onExtendedMenuClosed(boolean inLoad);