Merge "Fix a bug in submenu presenter priority handling" into klp-dev

This commit is contained in:
Adam Powell
2014-03-11 01:22:10 +00:00
committed by Android (Google) Code Review
2 changed files with 13 additions and 3 deletions

View File

@ -163,7 +163,7 @@ public class ListMenuPresenter implements MenuPresenter, AdapterView.OnItemClick
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mMenu.performItemAction(mAdapter.getItem(position), 0);
mMenu.performItemAction(mAdapter.getItem(position), this, 0);
}
@Override

View File

@ -247,11 +247,17 @@ public class MenuBuilder implements Menu {
startDispatchingItemsChanged();
}
private boolean dispatchSubMenuSelected(SubMenuBuilder subMenu) {
private boolean dispatchSubMenuSelected(SubMenuBuilder subMenu,
MenuPresenter preferredPresenter) {
if (mPresenters.isEmpty()) return false;
boolean result = false;
// Try the preferred presenter first.
if (preferredPresenter != null) {
result = preferredPresenter.onSubMenuSelected(subMenu);
}
for (WeakReference<MenuPresenter> ref : mPresenters) {
final MenuPresenter presenter = ref.get();
if (presenter == null) {
@ -865,6 +871,10 @@ public class MenuBuilder implements Menu {
}
public boolean performItemAction(MenuItem item, int flags) {
return performItemAction(item, null, flags);
}
public boolean performItemAction(MenuItem item, MenuPresenter preferredPresenter, int flags) {
MenuItemImpl itemImpl = (MenuItemImpl) item;
if (itemImpl == null || !itemImpl.isEnabled()) {
@ -889,7 +899,7 @@ public class MenuBuilder implements Menu {
if (providerHasSubMenu) {
provider.onPrepareSubMenu(subMenu);
}
invoked |= dispatchSubMenuSelected(subMenu);
invoked |= dispatchSubMenuSelected(subMenu, preferredPresenter);
if (!invoked) close(true);
} else {
if ((flags & FLAG_PERFORM_NO_CLOSE) == 0) {