Loading core/java/com/android/internal/view/menu/ActionMenuView.java +4 −0 Original line number Diff line number Diff line Loading @@ -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, Loading core/java/com/android/internal/view/menu/MenuPopupHelper.java +4 −0 Original line number Diff line number Diff line Loading @@ -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"); Loading policy/src/com/android/internal/policy/impl/PhoneWindow.java +26 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading @@ -888,6 +892,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { cb.onMenuOpened(FEATURE_ACTION_BAR, subMenu); } } }); } return true; } Loading Loading @@ -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 Loading Loading
core/java/com/android/internal/view/menu/ActionMenuView.java +4 −0 Original line number Diff line number Diff line Loading @@ -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, Loading
core/java/com/android/internal/view/menu/MenuPopupHelper.java +4 −0 Original line number Diff line number Diff line Loading @@ -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"); Loading
policy/src/com/android/internal/policy/impl/PhoneWindow.java +26 −6 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading @@ -888,6 +892,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { cb.onMenuOpened(FEATURE_ACTION_BAR, subMenu); } } }); } return true; } Loading Loading @@ -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 Loading