diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-27 00:59:18 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-27 00:59:18 +0000 |
commit | a77e4b19a4055f6aac6e71fa5ed8a9fea20e7aca (patch) | |
tree | 97a426b28883386b83367d659c9a96cf40a1fd51 /chrome/browser/gtk | |
parent | 411d884b34453cf6aff733b244662fb67372858e (diff) | |
download | chromium_src-a77e4b19a4055f6aac6e71fa5ed8a9fea20e7aca.zip chromium_src-a77e4b19a4055f6aac6e71fa5ed8a9fea20e7aca.tar.gz chromium_src-a77e4b19a4055f6aac6e71fa5ed8a9fea20e7aca.tar.bz2 |
[GTK] navigate on mouse up for middle clicks in bookmark bar submenu
BUG=60848
TEST=manual
Review URL: http://codereview.chromium.org/4090006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63997 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk')
-rw-r--r-- | chrome/browser/gtk/bookmark_menu_controller_gtk.cc | 16 | ||||
-rw-r--r-- | chrome/browser/gtk/bookmark_menu_controller_gtk.h | 11 |
2 files changed, 16 insertions, 11 deletions
diff --git a/chrome/browser/gtk/bookmark_menu_controller_gtk.cc b/chrome/browser/gtk/bookmark_menu_controller_gtk.cc index f966719..38fc8ef 100644 --- a/chrome/browser/gtk/bookmark_menu_controller_gtk.cc +++ b/chrome/browser/gtk/bookmark_menu_controller_gtk.cc @@ -140,7 +140,9 @@ void BookmarkMenuController::BuildMenu(const BookmarkNode* parent, start_child_index < parent->GetChildCount()); g_signal_connect(menu, "button-press-event", - G_CALLBACK(OnButtonPressedThunk), this); + G_CALLBACK(OnMenuButtonPressedOrReleasedThunk), this); + g_signal_connect(menu, "button-release-event", + G_CALLBACK(OnMenuButtonPressedOrReleasedThunk), this); for (int i = start_child_index; i < parent->GetChildCount(); ++i) { const BookmarkNode* node = parent->GetChild(i); @@ -203,18 +205,22 @@ void BookmarkMenuController::BuildMenu(const BookmarkNode* parent, } } -gboolean BookmarkMenuController::OnButtonPressed( +gboolean BookmarkMenuController::OnMenuButtonPressedOrReleased( GtkWidget* sender, GdkEventButton* event) { - if (event->button == 1) + // Handle middle mouse downs and right mouse ups. + if (!((event->button == 2 && event->type == GDK_BUTTON_RELEASE) || + (event->button == 3 && event->type == GDK_BUTTON_PRESS))) { return FALSE; + } ignore_button_release_ = false; GtkMenuShell* menu_shell = GTK_MENU_SHELL(sender); // If the cursor is outside our bounds, pass this event up to the parent. if (!gtk_util::WidgetContainsCursor(sender)) { if (menu_shell->parent_menu_shell) { - return OnButtonPressed(menu_shell->parent_menu_shell, event); + return OnMenuButtonPressedOrReleased(menu_shell->parent_menu_shell, + event); } else { // We are the top level menu; we can propagate no further. return FALSE; @@ -235,7 +241,7 @@ gboolean BookmarkMenuController::OnButtonPressed( const BookmarkNode* node = menu_item ? GetNodeFromMenuItem(menu_item) : NULL; - if (event->button == 2 && node) { + if (event->button == 2 && node && node->is_folder()) { bookmark_utils::OpenAll(parent_window_, profile_, page_navigator_, node, NEW_BACKGROUND_TAB); diff --git a/chrome/browser/gtk/bookmark_menu_controller_gtk.h b/chrome/browser/gtk/bookmark_menu_controller_gtk.h index 21f2bb9..cf8443c 100644 --- a/chrome/browser/gtk/bookmark_menu_controller_gtk.h +++ b/chrome/browser/gtk/bookmark_menu_controller_gtk.h @@ -68,12 +68,11 @@ class BookmarkMenuController : public BaseBookmarkModelObserver, void NavigateToMenuItem(GtkWidget* menu_item, WindowOpenDisposition disposition); - // Button press and release events for a GtkMenu and GtkMenuItem, - // respectively. We have to override these separate from OnMenuItemActivated - // because we need to handle right clicks and opening bookmarks with - // different dispositions. - CHROMEGTK_CALLBACK_1(BookmarkMenuController, gboolean, OnButtonPressed, - GdkEventButton*); + // Button press and release events for a GtkMenu. + CHROMEGTK_CALLBACK_1(BookmarkMenuController, gboolean, + OnMenuButtonPressedOrReleased, GdkEventButton*); + + // Button release event for a GtkMenuItem. CHROMEGTK_CALLBACK_1(BookmarkMenuController, gboolean, OnButtonReleased, GdkEventButton*); |