diff options
| author | 2013-09-09 17:24:04 +0000 | |
|---|---|---|
| committer | 2013-09-09 17:24:05 +0000 | |
| commit | 498301d8b554f3806ddb01acd2ea98c27132a0e2 (patch) | |
| tree | 6ab186513d8345f6791c3516285f0e7dca6f67d9 | |
| parent | 30590646d6846a4db76d416c70ee68a3f9f359b5 (diff) | |
| parent | fbe4a586c29b6e415e8d39d73d19bd7f0215a851 (diff) | |
Merge "Add drag-to-open for action bar submenus" into klp-dev
| -rw-r--r-- | core/java/com/android/internal/view/menu/ActionMenuPresenter.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java index f060efd98451..c1ae9c24ea4e 100644 --- a/core/java/com/android/internal/view/menu/ActionMenuPresenter.java +++ b/core/java/com/android/internal/view/menu/ActionMenuPresenter.java @@ -156,7 +156,7 @@ public class ActionMenuPresenter extends BaseMenuPresenter } @Override - public View getItemView(MenuItemImpl item, View convertView, ViewGroup parent) { + public View getItemView(final MenuItemImpl item, View convertView, ViewGroup parent) { View actionView = item.getActionView(); if (actionView == null || item.hasCollapsibleActionView()) { if (!(convertView instanceof ActionMenuItemView)) { @@ -166,6 +166,27 @@ public class ActionMenuPresenter extends BaseMenuPresenter } actionView.setVisibility(item.isActionViewExpanded() ? View.GONE : View.VISIBLE); + if (item.hasSubMenu()) { + actionView.setOnTouchListener(new ForwardingListener(actionView) { + @Override + public ListPopupWindow getPopup() { + return mActionButtonPopup != null ? mActionButtonPopup.getPopup() : null; + } + + @Override + protected boolean onForwardingStarted() { + return onSubMenuSelected((SubMenuBuilder) item.getSubMenu()); + } + + @Override + protected boolean onForwardingStopped() { + return dismissPopupMenus(); + } + }); + } else { + actionView.setOnTouchListener(null); + } + final ActionMenuView menuParent = (ActionMenuView) parent; final ViewGroup.LayoutParams lp = actionView.getLayoutParams(); if (!menuParent.checkLayoutParams(lp)) { |