From fbe4a586c29b6e415e8d39d73d19bd7f0215a851 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Fri, 6 Sep 2013 13:45:54 -0700 Subject: Add drag-to-open for action bar submenus BUG: 10649895 Change-Id: I5076e0d09453a75ed20c44eede4b43e8a2f535fd --- .../internal/view/menu/ActionMenuPresenter.java | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) 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)) { -- cgit v1.2.3-59-g8ed1b