summaryrefslogtreecommitdiffstats
path: root/core/java/com
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2012-05-15 11:31:13 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2012-05-15 11:31:13 -0700
commit8e49098f76042c63b4fa8ede9ef9bdf75b77f509 (patch)
tree42ec24ed789251c84af05d917e9a1f569c0c09d3 /core/java/com
parent95c9f90e55d9b5fb33083b92fa068e29e877de0d (diff)
parente48d12b78011ff5ddbb6838a038ea5384190ec92 (diff)
downloadframeworks_base-8e49098f76042c63b4fa8ede9ef9bdf75b77f509.zip
frameworks_base-8e49098f76042c63b4fa8ede9ef9bdf75b77f509.tar.gz
frameworks_base-8e49098f76042c63b4fa8ede9ef9bdf75b77f509.tar.bz2
am e48d12b7: Merge "Fix ActionProviders that have submenus" into jb-dev
* commit 'e48d12b78011ff5ddbb6838a038ea5384190ec92': Fix ActionProviders that have submenus
Diffstat (limited to 'core/java/com')
-rw-r--r--core/java/com/android/internal/view/menu/MenuBuilder.java13
1 files changed, 9 insertions, 4 deletions
diff --git a/core/java/com/android/internal/view/menu/MenuBuilder.java b/core/java/com/android/internal/view/menu/MenuBuilder.java
index 9fbca82..458ea2f 100644
--- a/core/java/com/android/internal/view/menu/MenuBuilder.java
+++ b/core/java/com/android/internal/view/menu/MenuBuilder.java
@@ -873,15 +873,20 @@ public class MenuBuilder implements Menu {
boolean invoked = itemImpl.invoke();
+ final ActionProvider provider = item.getActionProvider();
+ final boolean providerHasSubMenu = provider != null && provider.hasSubMenu();
if (itemImpl.hasCollapsibleActionView()) {
invoked |= itemImpl.expandActionView();
if (invoked) close(true);
- } else if (item.hasSubMenu()) {
+ } else if (itemImpl.hasSubMenu() || providerHasSubMenu) {
close(false);
- final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
- final ActionProvider provider = item.getActionProvider();
- if (provider != null && provider.hasSubMenu()) {
+ if (!itemImpl.hasSubMenu()) {
+ itemImpl.setSubMenu(new SubMenuBuilder(getContext(), this, itemImpl));
+ }
+
+ final SubMenuBuilder subMenu = (SubMenuBuilder) itemImpl.getSubMenu();
+ if (providerHasSubMenu) {
provider.onPrepareSubMenu(subMenu);
}
invoked |= dispatchSubMenuSelected(subMenu);