Merge "Fix a bug in submenu presenter priority handling" into klp-dev
This commit is contained in:
@ -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
|
||||
|
@ -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) {
|
||||
|
Reference in New Issue
Block a user