summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/views/bookmark_bar_view.cc12
-rw-r--r--chrome/browser/views/bookmark_menu_controller_views.cc14
-rw-r--r--views/controls/button/menu_button.cc4
-rw-r--r--views/controls/menu/menu_controller.cc6
4 files changed, 26 insertions, 10 deletions
diff --git a/chrome/browser/views/bookmark_bar_view.cc b/chrome/browser/views/bookmark_bar_view.cc
index 2e9b167..492f323c 100644
--- a/chrome/browser/views/bookmark_bar_view.cc
+++ b/chrome/browser/views/bookmark_bar_view.cc
@@ -227,9 +227,15 @@ class BookmarkFolderButton : public views::MenuButton {
}
virtual bool IsTriggerableEvent(const views::MouseEvent& e) {
- // This is hard coded to avoid potential notification on left mouse down,
- // which we want to show the menu.
- return e.IsMiddleMouseButton();
+ // Left clicks should show the menu contents and right clicks should show
+ // the context menu. They should not trigger the opening of underlying urls.
+ if (e.GetFlags() == views::MouseEvent::EF_LEFT_BUTTON_DOWN ||
+ e.GetFlags() == views::MouseEvent::EF_RIGHT_BUTTON_DOWN)
+ return false;
+
+ WindowOpenDisposition disposition(
+ event_utils::DispositionFromEventFlags(e.GetFlags()));
+ return disposition != CURRENT_TAB;
}
virtual void Paint(gfx::Canvas *canvas) {
diff --git a/chrome/browser/views/bookmark_menu_controller_views.cc b/chrome/browser/views/bookmark_menu_controller_views.cc
index 80bf767..45620f7 100644
--- a/chrome/browser/views/bookmark_menu_controller_views.cc
+++ b/chrome/browser/views/bookmark_menu_controller_views.cc
@@ -89,10 +89,16 @@ bool BookmarkMenuController::IsTriggerableEvent(const views::MouseEvent& e) {
void BookmarkMenuController::ExecuteCommand(int id, int mouse_event_flags) {
DCHECK(page_navigator_);
DCHECK(menu_id_to_node_map_.find(id) != menu_id_to_node_map_.end());
- GURL url = menu_id_to_node_map_[id]->GetURL();
- page_navigator_->OpenURL(
- url, GURL(), event_utils::DispositionFromEventFlags(mouse_event_flags),
- PageTransition::AUTO_BOOKMARK);
+
+ const BookmarkNode* node = menu_id_to_node_map_[id];
+ std::vector<const BookmarkNode*> selection;
+ selection.push_back(node);
+
+ WindowOpenDisposition initial_disposition =
+ event_utils::DispositionFromEventFlags(mouse_event_flags);
+
+ bookmark_utils::OpenAll(parent_, profile_, page_navigator_, selection,
+ initial_disposition);
}
bool BookmarkMenuController::GetDropFormats(
diff --git a/views/controls/button/menu_button.cc b/views/controls/button/menu_button.cc
index e457304..ced0942 100644
--- a/views/controls/button/menu_button.cc
+++ b/views/controls/button/menu_button.cc
@@ -189,8 +189,8 @@ bool MenuButton::OnMousePressed(const MouseEvent& e) {
void MenuButton::OnMouseReleased(const MouseEvent& e,
bool canceled) {
if (GetDragOperations(e.x(), e.y()) != DragDropTypes::DRAG_NONE &&
- state() != BS_DISABLED && !canceled && !InDrag() &&
- e.IsOnlyLeftMouseButton() && HitTest(e.location())) {
+ state() != BS_DISABLED && !canceled && !InDrag() && !IsTriggerableEvent(e)
+ && HitTest(e.location())) {
Activate();
} else {
TextButton::OnMouseReleased(e, canceled);
diff --git a/views/controls/menu/menu_controller.cc b/views/controls/menu/menu_controller.cc
index 4388d91..ef33bc7 100644
--- a/views/controls/menu/menu_controller.cc
+++ b/views/controls/menu/menu_controller.cc
@@ -439,7 +439,11 @@ void MenuController::OnMouseReleased(SubmenuView* source,
return;
}
- if (!part.is_scroll() && part.menu && !part.menu->HasSubmenu()) {
+ // We can use Ctrl+click or the middle mouse button to recursively open urls
+ // for selected folder menu items. If it's only a left click, show the
+ // contents of the folder.
+ if (!part.is_scroll() && part.menu && !(part.menu->HasSubmenu() &&
+ (event.GetFlags() == MouseEvent::EF_LEFT_BUTTON_DOWN))) {
if (part.menu->GetDelegate()->IsTriggerableEvent(event)) {
Accept(part.menu, event.GetFlags());
return;