summaryrefslogtreecommitdiff
path: root/core/java/android/widget/PopupMenu.java
diff options
context:
space:
mode:
authorOren Blasberg <orenb@google.com>2015-09-02 14:25:56 -0700
committerOren Blasberg <orenb@google.com>2015-09-10 09:54:17 -0700
commit8e12f8df076d38853e0fedde7ed79e2e8689d59e (patch)
tree992875f4076db61e90a5e92b36bece4128a4b7e9 /core/java/android/widget/PopupMenu.java
parentb23976efdd6ffe42cb3b8fe6650fc77bd9a161e8 (diff)
Add Cascading submenus implementation.
This change adds a new Cascading implementation of MenuPopup. When enabled, submenus will show up in a cascading side by side fashion when opened next to popup menus. Bug: 20127825 Change-Id: Ie3c797fb5dbada7521cd93dc4171950af2be2ff7
Diffstat (limited to 'core/java/android/widget/PopupMenu.java')
-rw-r--r--core/java/android/widget/PopupMenu.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/core/java/android/widget/PopupMenu.java b/core/java/android/widget/PopupMenu.java
index 3b2d60d1e1a4..bd1fbb8f29c5 100644
--- a/core/java/android/widget/PopupMenu.java
+++ b/core/java/android/widget/PopupMenu.java
@@ -43,6 +43,7 @@ public class PopupMenu implements MenuBuilder.Callback, MenuPresenter.Callback {
private final MenuBuilder mMenu;
private final View mAnchor;
private final MenuPopupHelper mPopup;
+ private final boolean mShowCascadingMenus;
private OnMenuItemClickListener mMenuItemClickListener;
private OnDismissListener mDismissListener;
@@ -107,6 +108,8 @@ public class PopupMenu implements MenuBuilder.Callback, MenuPresenter.Callback {
public PopupMenu(Context context, View anchor, int gravity, int popupStyleAttr,
int popupStyleRes) {
mContext = context;
+ mShowCascadingMenus = context.getResources().getBoolean(
+ com.android.internal.R.bool.config_enableCascadingSubmenus);
mMenu = new MenuBuilder(context);
mMenu.setCallback(this);
mAnchor = anchor;
@@ -273,8 +276,12 @@ public class PopupMenu implements MenuBuilder.Callback, MenuPresenter.Callback {
return true;
}
- // Current menu will be dismissed by the normal helper, submenu will be shown in its place.
- new MenuPopupHelper(mContext, subMenu, mAnchor).show();
+ if (!mShowCascadingMenus) {
+ // Current menu will be dismissed by the normal helper, submenu will be shown in its
+ // place. (If cascading menus are enabled, the cascading implementation will show the
+ // submenu itself).
+ new MenuPopupHelper(mContext, subMenu, mAnchor).show();
+ }
return true;
}