summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2011-01-07 17:27:19 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-01-07 17:27:19 -0800
commitb5e18555d61a3a1ed0715230b8e0084daec9eba8 (patch)
treeccca1ec69e57ea92865475521302724812bd52be
parente15ac3b97049b0f2e5d61e40910b0da9f810841a (diff)
parent5e3f284baa271cb0fbf90e504d19fdd2e385382e (diff)
downloadframeworks_base-b5e18555d61a3a1ed0715230b8e0084daec9eba8.zip
frameworks_base-b5e18555d61a3a1ed0715230b8e0084daec9eba8.tar.gz
frameworks_base-b5e18555d61a3a1ed0715230b8e0084daec9eba8.tar.bz2
Merge "Fix bug 3200615 - "MenuPopupHelper cannot be used without an anchor"" into honeycomb
-rw-r--r--core/java/com/android/internal/view/menu/ActionMenuView.java7
-rw-r--r--core/java/com/android/internal/view/menu/MenuPopupHelper.java9
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindow.java9
3 files changed, 17 insertions, 8 deletions
diff --git a/core/java/com/android/internal/view/menu/ActionMenuView.java b/core/java/com/android/internal/view/menu/ActionMenuView.java
index 2c5baba..9381675 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuView.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuView.java
@@ -66,9 +66,10 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
}
public void run() {
- mOverflowPopup = mPopup;
- mPopup.show();
- mPostedOpenRunnable = null;
+ if (mPopup.tryShow()) {
+ mOverflowPopup = mPopup;
+ mPostedOpenRunnable = null;
+ }
}
}
diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
index a070835..fe41f52 100644
--- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java
+++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
@@ -69,6 +69,12 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
}
public void show() {
+ if (!tryShow()) {
+ throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor");
+ }
+ }
+
+ public boolean tryShow() {
mPopup = new ListPopupWindow(mContext, null, com.android.internal.R.attr.popupMenuStyle);
mPopup.setOnItemClickListener(this);
mPopup.setOnDismissListener(this);
@@ -92,13 +98,14 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
mTreeObserver.addOnGlobalLayoutListener(this);
mPopup.setAnchorView(anchor);
} else {
- throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor");
+ return false;
}
mPopup.setContentWidth(Math.min(measureContentWidth(adapter), mPopupMaxWidth));
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
mPopup.show();
mPopup.getListView().setOnKeyListener(this);
+ return true;
}
public void dismiss() {
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index 3b2aeaf..5098a98 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -3007,10 +3007,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
@Override
public void run() {
- show();
- Callback cb = getCallback();
- if (cb != null) {
- cb.onMenuOpened(FEATURE_ACTION_BAR, mSubMenu);
+ if (tryShow()) {
+ Callback cb = getCallback();
+ if (cb != null) {
+ cb.onMenuOpened(FEATURE_ACTION_BAR, mSubMenu);
+ }
}
}
}