diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-27 23:29:21 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-27 23:29:21 +0000 |
commit | 48abb0046f935690ea83d0290dc6ff0a60d99b27 (patch) | |
tree | eac7932bef4a68aab43c67c7a64eafcb85ea91f8 | |
parent | b1d3f6c4485f7a1f0587dcb203339a45325fb419 (diff) | |
download | chromium_src-48abb0046f935690ea83d0290dc6ff0a60d99b27.zip chromium_src-48abb0046f935690ea83d0290dc6ff0a60d99b27.tar.gz chromium_src-48abb0046f935690ea83d0290dc6ff0a60d99b27.tar.bz2 |
Lands http://codereview.chromium.org/291006 for Pierre:
Open all bookmarks in a bookmark menu folder according to the window disposition derived from the event flags. This is currently only possible with a middle click on the top level bookmark bar button.
BUG=19597
TEST=Control click a folder on your bookmark bar, and thorougly test
bookmark bar, especially with folders.
Review URL: http://codereview.chromium.org/334047
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30281 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/views/bookmark_bar_view.cc | 12 | ||||
-rw-r--r-- | chrome/browser/views/bookmark_menu_controller_views.cc | 14 | ||||
-rw-r--r-- | views/controls/button/menu_button.cc | 4 | ||||
-rw-r--r-- | views/controls/menu/menu_controller.cc | 6 |
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; |