diff options
author | yosin@chromium.org <yosin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-12 04:05:40 +0000 |
---|---|---|
committer | yosin@chromium.org <yosin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-12 04:05:40 +0000 |
commit | f66dcd5e4ee3e387bd99032909213b35f4320426 (patch) | |
tree | 45da5f8f42c8ffb7aefd4036e7198bcbe3382baa /ui | |
parent | d624b0b6b7bef5ad28ce41f4a9731ad80f8a8b4f (diff) | |
download | chromium_src-f66dcd5e4ee3e387bd99032909213b35f4320426.zip chromium_src-f66dcd5e4ee3e387bd99032909213b35f4320426.tar.gz chromium_src-f66dcd5e4ee3e387bd99032909213b35f4320426.tar.bz2 |
This patch introduces new API ShouldExecuteCommandWithoutClosingMenu() in views::MenuDelegate for opening bookmark in background tab by Ctrl+Click.
BUG=75472
TEST=On folder menu in bookmark bar, Ctrl+Click bookmark menu items
Review URL: https://chromiumcodereview.appspot.com/11485022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@172517 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/controls/menu/menu_controller.cc | 6 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_delegate.cc | 5 | ||||
-rw-r--r-- | ui/views/controls/menu/menu_delegate.h | 5 |
3 files changed, 16 insertions, 0 deletions
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc index 9f180da..904f019 100644 --- a/ui/views/controls/menu/menu_controller.cc +++ b/ui/views/controls/menu/menu_controller.cc @@ -474,6 +474,12 @@ void MenuController::OnMouseReleased(SubmenuView* source, SendMouseReleaseToActiveView(source, event); return; } + if (part.menu->GetDelegate()->ShouldExecuteCommandWithoutClosingMenu( + part.menu->GetCommand(), event)) { + part.menu->GetDelegate()->ExecuteCommand(part.menu->GetCommand(), + event.flags()); + return; + } if (!part.menu->NonIconChildViewsCount() && part.menu->GetDelegate()->IsTriggerableEvent(part.menu, event)) { Accept(part.menu, event.flags()); diff --git a/ui/views/controls/menu/menu_delegate.cc b/ui/views/controls/menu/menu_delegate.cc index 342cd46..2457eee 100644 --- a/ui/views/controls/menu/menu_delegate.cc +++ b/ui/views/controls/menu/menu_delegate.cc @@ -57,6 +57,11 @@ void MenuDelegate::ExecuteCommand(int id, int mouse_event_flags) { ExecuteCommand(id); } +bool MenuDelegate::ShouldExecuteCommandWithoutClosingMenu(int id, + const ui::Event& e) { + return false; +} + bool MenuDelegate::IsTriggerableEvent(MenuItemView* source, const ui::Event& e) { return e.type() == ui::ET_GESTURE_TAP || diff --git a/ui/views/controls/menu/menu_delegate.h b/ui/views/controls/menu/menu_delegate.h index 918e322..5d2ae0d 100644 --- a/ui/views/controls/menu/menu_delegate.h +++ b/ui/views/controls/menu/menu_delegate.h @@ -112,6 +112,11 @@ class VIEWS_EXPORT MenuDelegate { // other than a mouse event. virtual void ExecuteCommand(int id, int mouse_event_flags); + // Returns true if ExecuteCommand() should be invoked while leaving the + // menu open. Default implementation returns true. + virtual bool ShouldExecuteCommandWithoutClosingMenu(int id, + const ui::Event& e); + // Returns true if the specified event is one the user can use to trigger, or // accept, the item. Defaults to left or right mouse buttons or tap. virtual bool IsTriggerableEvent(MenuItemView* view, const ui::Event& e); |