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:
@ -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
|
||||||
|
@ -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) {
|
||||||
|
Reference in New Issue
Block a user