diff options
| author | Adam Powell <adamp@google.com> | 2012-05-15 11:31:13 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2012-05-15 11:31:13 -0700 |
| commit | 8e49098f76042c63b4fa8ede9ef9bdf75b77f509 (patch) | |
| tree | 42ec24ed789251c84af05d917e9a1f569c0c09d3 /core/java/com | |
| parent | 95c9f90e55d9b5fb33083b92fa068e29e877de0d (diff) | |
| parent | e48d12b78011ff5ddbb6838a038ea5384190ec92 (diff) | |
| download | frameworks_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.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 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); |
