summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authoryosin@chromium.org <yosin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-12 04:05:40 +0000
committeryosin@chromium.org <yosin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-12 04:05:40 +0000
commitf66dcd5e4ee3e387bd99032909213b35f4320426 (patch)
tree45da5f8f42c8ffb7aefd4036e7198bcbe3382baa /ui
parentd624b0b6b7bef5ad28ce41f4a9731ad80f8a8b4f (diff)
downloadchromium_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.cc6
-rw-r--r--ui/views/controls/menu/menu_delegate.cc5
-rw-r--r--ui/views/controls/menu/menu_delegate.h5
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);