Skip to content

Commit f77f480

Browse files
committed
Fix ActionProviders that have submenus
Automatically create a submenu for items with ActionProviders that provide a submenu when the item was not initially configured to have one. Bug 6493376 Change-Id: I27218e2ab205e87534f235eb04042b185d99d143
1 parent 2411c33 commit f77f480

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

core/java/com/android/internal/view/menu/MenuBuilder.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -873,15 +873,20 @@ public boolean performItemAction(MenuItem item, int flags) {
873873

874874
boolean invoked = itemImpl.invoke();
875875

876+
final ActionProvider provider = item.getActionProvider();
877+
final boolean providerHasSubMenu = provider != null && provider.hasSubMenu();
876878
if (itemImpl.hasCollapsibleActionView()) {
877879
invoked |= itemImpl.expandActionView();
878880
if (invoked) close(true);
879-
} else if (item.hasSubMenu()) {
881+
} else if (itemImpl.hasSubMenu() || providerHasSubMenu) {
880882
close(false);
881883

882-
final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
883-
final ActionProvider provider = item.getActionProvider();
884-
if (provider != null && provider.hasSubMenu()) {
884+
if (!itemImpl.hasSubMenu()) {
885+
itemImpl.setSubMenu(new SubMenuBuilder(getContext(), this, itemImpl));
886+
}
887+
888+
final SubMenuBuilder subMenu = (SubMenuBuilder) itemImpl.getSubMenu();
889+
if (providerHasSubMenu) {
885890
provider.onPrepareSubMenu(subMenu);
886891
}
887892
invoked |= dispatchSubMenuSelected(subMenu);

0 commit comments

Comments
 (0)