am 3a153c0d: Merge "Fix a bug in submenu presenter priority handling" into klp-dev

* commit '3a153c0de271a004710e5ac545c48778f7e51b12':
  Fix a bug in submenu presenter priority handling
This commit is contained in:
Adam Powell
2014-03-11 01:24:47 +00:00
committed by Android Git Automerger
2 changed files with 13 additions and 3 deletions

View File

@ -163,7 +163,7 @@ public class ListMenuPresenter implements MenuPresenter, AdapterView.OnItemClick
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 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 @Override

View File

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