diff options
| author | Adam Powell <adamp@google.com> | 2012-05-14 17:24:24 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-05-14 17:24:24 -0700 |
| commit | e48d12b78011ff5ddbb6838a038ea5384190ec92 (patch) | |
| tree | 17982f1aa645d623473b527cb8f1b5f36a896b6c /core/java | |
| parent | 9e8b7406ca4b4f46486a624ff8a9849f3e46cbd4 (diff) | |
| parent | f77f480800a84ceb377e47cc200baf2bae4f5d9a (diff) | |
Merge "Fix ActionProviders that have submenus" into jb-dev
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/com/android/internal/view/menu/MenuBuilder.java | 13 |
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 9fbca824f202..458ea2f8d785 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); |
