summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/bookmark_menu_controller_gtk.cc
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2010-11-18 18:32:45 +0000
committerBen Murdoch <benm@google.com>2010-11-18 18:38:07 +0000
commit513209b27ff55e2841eac0e4120199c23acce758 (patch)
treeaeba30bb08c5f47c57003544e378a377c297eee6 /chrome/browser/gtk/bookmark_menu_controller_gtk.cc
parent164f7496de0fbee436b385a79ead9e3cb81a50c1 (diff)
downloadexternal_chromium-513209b27ff55e2841eac0e4120199c23acce758.zip
external_chromium-513209b27ff55e2841eac0e4120199c23acce758.tar.gz
external_chromium-513209b27ff55e2841eac0e4120199c23acce758.tar.bz2
Merge Chromium at r65505: Initial merge by git.
Change-Id: I31d8f1d8cd33caaf7f47ffa7350aef42d5fbdb45
Diffstat (limited to 'chrome/browser/gtk/bookmark_menu_controller_gtk.cc')
-rw-r--r--chrome/browser/gtk/bookmark_menu_controller_gtk.cc16
1 files changed, 11 insertions, 5 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);