Merge "Fix bug 3333015 - Overflow menu item submenus do not open" into honeycomb
This commit is contained in:
@ -139,6 +139,10 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
|
||||
mReserveOverflow = reserveOverflow;
|
||||
}
|
||||
|
||||
public View getOverflowButton() {
|
||||
return mOverflowButton;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected LayoutParams generateDefaultLayoutParams() {
|
||||
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,
|
||||
|
@ -68,6 +68,10 @@ public class MenuPopupHelper implements AdapterView.OnItemClickListener, View.On
|
||||
}
|
||||
}
|
||||
|
||||
public void setAnchorView(View anchor) {
|
||||
mAnchorView = new WeakReference<View>(anchor);
|
||||
}
|
||||
|
||||
public void show() {
|
||||
if (!tryShow()) {
|
||||
throw new IllegalStateException("MenuPopupHelper cannot be used without an anchor");
|
||||
|
@ -26,9 +26,11 @@ import static android.view.WindowManager.LayoutParams.FLAG_SPLIT_TOUCH;
|
||||
import com.android.internal.view.BaseSurfaceHolder;
|
||||
import com.android.internal.view.RootViewSurfaceTaker;
|
||||
import com.android.internal.view.StandaloneActionMode;
|
||||
import com.android.internal.view.menu.ActionMenuView;
|
||||
import com.android.internal.view.menu.ContextMenuBuilder;
|
||||
import com.android.internal.view.menu.MenuBuilder;
|
||||
import com.android.internal.view.menu.MenuDialogHelper;
|
||||
import com.android.internal.view.menu.MenuItemImpl;
|
||||
import com.android.internal.view.menu.MenuPopupHelper;
|
||||
import com.android.internal.view.menu.MenuView;
|
||||
import com.android.internal.view.menu.SubMenuBuilder;
|
||||
@ -881,6 +883,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
||||
// The window manager will give us a valid window token
|
||||
new MenuDialogHelper(subMenu).show(null);
|
||||
} else if (hasFeature(FEATURE_ACTION_BAR)) {
|
||||
mDecor.post(new Runnable() {
|
||||
public void run() {
|
||||
mActionButtonPopup = new ActionButtonSubmenu(getContext(), subMenu);
|
||||
mActionButtonPopup.show();
|
||||
Callback cb = getCallback();
|
||||
@ -888,6 +892,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
||||
cb.onMenuOpened(FEATURE_ACTION_BAR, subMenu);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -3009,6 +3015,20 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
||||
public ActionButtonSubmenu(Context context, SubMenuBuilder subMenu) {
|
||||
super(context, subMenu);
|
||||
mSubMenu = subMenu;
|
||||
|
||||
MenuBuilder parentMenu = subMenu.getRootMenu();
|
||||
MenuItemImpl item = (MenuItemImpl) subMenu.getItem();
|
||||
if (!item.isActionButton()) {
|
||||
// Give a reasonable anchor to nested submenus.
|
||||
ActionMenuView amv = (ActionMenuView) parentMenu.getMenuView(
|
||||
MenuBuilder.TYPE_ACTION_BUTTON, null);
|
||||
|
||||
View anchor = amv.getOverflowButton();
|
||||
if (anchor == null) {
|
||||
anchor = amv;
|
||||
}
|
||||
setAnchorView(anchor);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user