Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f77f4808 authored by Adam Powell's avatar Adam Powell
Browse files

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
parent 2411c336
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -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);