From 2b91f5de30f2e08b9d14a172a60625cd468d7d79 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 26 Mar 2013 14:22:10 +0100 Subject: [PATCH] GtkButton: Don't suppress unhandled mouse events Mouse events that we do not handle should bubble up to the parent widget, so they can be handled there, instead of disappearing inside the button. Also use GDK_EVENT_{STOP,PROPAGATE} to make return values clearer. https://bugzilla.gnome.org/show_bug.cgi?id=696640 --- gtk/gtkbutton.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/gtk/gtkbutton.c b/gtk/gtkbutton.c index 3ac36a71b8..995f817d8b 100644 --- a/gtk/gtkbutton.c +++ b/gtk/gtkbutton.c @@ -1784,10 +1784,13 @@ gtk_button_button_press (GtkWidget *widget, gtk_widget_grab_focus (widget); if (event->button == GDK_BUTTON_PRIMARY) - g_signal_emit (button, button_signals[PRESSED], 0); + { + g_signal_emit (button, button_signals[PRESSED], 0); + return GDK_EVENT_STOP; + } } - return TRUE; + return GDK_EVENT_PROPAGATE; } static gboolean @@ -1800,9 +1803,10 @@ gtk_button_button_release (GtkWidget *widget, { button = GTK_BUTTON (widget); g_signal_emit (button, button_signals[RELEASED], 0); + return GDK_EVENT_STOP; } - return TRUE; + return GDK_EVENT_PROPAGATE; } static gboolean @@ -1818,13 +1822,15 @@ gtk_button_touch (GtkWidget *widget, gtk_widget_grab_focus (widget); g_signal_emit (button, button_signals[PRESSED], 0); + return GDK_EVENT_STOP; } else if (event->type == GDK_TOUCH_END) { g_signal_emit (button, button_signals[RELEASED], 0); + return GDK_EVENT_STOP; } - return TRUE; + return GDK_EVENT_PROPAGATE; } static gboolean