Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5636)

Unified Diff: chrome/browser/gtk/back_forward_button_gtk.cc

Issue 131071: Implement window open disposition for (some) navigation buttons.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: bool->int Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/gtk/back_forward_button_gtk.h ('k') | chrome/browser/gtk/browser_toolbar_gtk.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/back_forward_button_gtk.cc
===================================================================
--- chrome/browser/gtk/back_forward_button_gtk.cc (revision 18718)
+++ chrome/browser/gtk/back_forward_button_gtk.cc (working copy)
@@ -12,6 +12,7 @@
#include "chrome/browser/browser.h"
#include "chrome/browser/gtk/back_forward_menu_model_gtk.h"
#include "chrome/browser/gtk/menu_gtk.h"
+#include "chrome/common/gtk_util.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
@@ -21,6 +22,7 @@
BackForwardButtonGtk::BackForwardButtonGtk(Browser* browser, bool is_forward)
: browser_(browser),
is_forward_(is_forward),
+ last_release_event_flags_(0),
show_menu_factory_(this) {
int normal, active, highlight, depressed, tooltip;
if (is_forward) {
@@ -49,6 +51,8 @@
G_CALLBACK(OnClick), this);
g_signal_connect(widget(), "button-press-event",
G_CALLBACK(OnButtonPress), this);
+ g_signal_connect(widget(), "button-release-event",
+ G_CALLBACK(OnButtonRelease), this);
gtk_widget_add_events(widget(), GDK_POINTER_MOTION_MASK);
g_signal_connect(widget(), "motion-notify-event",
G_CALLBACK(OnMouseMove), this);
@@ -57,6 +61,8 @@
// default of right aligned.
g_object_set_data(G_OBJECT(widget()), "left-align-popup",
reinterpret_cast<void*>(true));
+
+ gtk_util::SetButtonTriggersNavigation(widget());
}
BackForwardButtonGtk::~BackForwardButtonGtk() {
@@ -83,13 +89,18 @@
BackForwardButtonGtk* button) {
button->show_menu_factory_.RevokeAll();
- button->browser_->ExecuteCommand(button->is_forward_ ?
- IDC_FORWARD : IDC_BACK);
+ DCHECK(button->last_release_event_flags_ != 0);
+ button->browser_->ExecuteCommandWithDisposition(
+ button->is_forward_ ? IDC_FORWARD : IDC_BACK,
+ event_utils::DispositionFromEventFlags(
+ button->last_release_event_flags_));
}
// static
gboolean BackForwardButtonGtk::OnButtonPress(GtkWidget* widget,
GdkEventButton* event, BackForwardButtonGtk* button) {
+ button->last_release_event_flags_ = 0;
+
if (event->button != 1)
return FALSE;
@@ -102,6 +113,13 @@
}
// static
+gboolean BackForwardButtonGtk::OnButtonRelease(GtkWidget* widget,
+ GdkEventButton* event, BackForwardButtonGtk* button) {
+ button->last_release_event_flags_ = event->state;
+ return FALSE;
+}
+
+// static
gboolean BackForwardButtonGtk::OnMouseMove(GtkWidget* widget,
GdkEventMotion* event, BackForwardButtonGtk* button) {
// If we aren't waiting to show the back forward menu, do nothing.
« no previous file with comments | « chrome/browser/gtk/back_forward_button_gtk.h ('k') | chrome/browser/gtk/browser_toolbar_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698