Skip to content

Commit e48d12b

Browse files
adampAndroid (Google) Code Review
authored andcommitted
Merge "Fix ActionProviders that have submenus" into jb-dev
2 parents 9e8b740 + f77f480 commit e48d12b

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)