diff options
author | Bastien Nocera <hadess@hadess.net> | 2013-05-16 14:27:39 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2013-05-18 14:49:55 +0200 |
commit | 41b07bdc96a3738644fbb09827fb8a36877b8d44 (patch) | |
tree | df909387c5763850ce8b410897b5445de7368f80 /gtk/gtkswitch.c | |
parent | 7d54fc14bffb01822003956f9653604c1b531759 (diff) | |
download | gtk+-41b07bdc96a3738644fbb09827fb8a36877b8d44.tar.gz |
GtkSwitch: Don't handle events from extra mouse buttons
Also use GDK_EVENT_{STOP,PROPAGATE} to make return
values clearer.
https://bugzilla.gnome.org/show_bug.cgi?id=696640
Diffstat (limited to 'gtk/gtkswitch.c')
-rw-r--r-- | gtk/gtkswitch.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/gtk/gtkswitch.c b/gtk/gtkswitch.c index 67dc8cd54d..ce2b9d9851 100644 --- a/gtk/gtkswitch.c +++ b/gtk/gtkswitch.c @@ -108,6 +108,10 @@ gtk_switch_button_press (GtkWidget *widget, GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv; GtkAllocation allocation; + /* Don't handle extra mouse buttons events, let them bubble up */ + if (event->button > 5) + return GDK_EVENT_PROPAGATE; + gtk_widget_get_allocation (widget, &allocation); if (priv->is_active) @@ -118,7 +122,7 @@ gtk_switch_button_press (GtkWidget *widget, if (event->x <= allocation.width / 2) { priv->in_press = TRUE; - return TRUE; + return GDK_EVENT_STOP; } priv->offset = event->x - allocation.width / 2; @@ -131,7 +135,7 @@ gtk_switch_button_press (GtkWidget *widget, if (event->x >= allocation.width / 2) { priv->in_press = TRUE; - return TRUE; + return GDK_EVENT_STOP; } priv->offset = event->x; @@ -143,7 +147,7 @@ gtk_switch_button_press (GtkWidget *widget, "gtk-dnd-drag-threshold", &priv->drag_threshold, NULL); - return TRUE; + return GDK_EVENT_STOP; } static gboolean @@ -154,10 +158,10 @@ gtk_switch_motion (GtkWidget *widget, /* if this is a direct toggle we don't handle motion */ if (priv->in_press) - return FALSE; + return GDK_EVENT_PROPAGATE; if (ABS (event->x - priv->drag_start) < priv->drag_threshold) - return TRUE; + return GDK_EVENT_STOP; if (event->state & GDK_BUTTON1_MASK) { @@ -198,10 +202,10 @@ gtk_switch_motion (GtkWidget *widget, /* we need to redraw the handle */ gtk_widget_queue_draw (widget); - return TRUE; + return GDK_EVENT_STOP; } - return FALSE; + return GDK_EVENT_PROPAGATE; } static gboolean @@ -211,6 +215,10 @@ gtk_switch_button_release (GtkWidget *widget, GtkSwitchPrivate *priv = GTK_SWITCH (widget)->priv; GtkAllocation allocation; + /* Don't handle extra mouse buttons events, let them bubble up */ + if (event->button > 5) + return GDK_EVENT_PROPAGATE; + gtk_widget_get_allocation (widget, &allocation); /* dragged toggles have a "soft" grab, so we don't care whether we @@ -218,7 +226,7 @@ gtk_switch_button_release (GtkWidget *widget, * for direct toggles, instead */ if (!priv->is_dragging && !priv->in_switch) - return FALSE; + return GDK_EVENT_PROPAGATE; /* direct toggle */ if (priv->in_press) @@ -226,7 +234,7 @@ gtk_switch_button_release (GtkWidget *widget, priv->in_press = FALSE; gtk_switch_set_active (GTK_SWITCH (widget), !priv->is_active); - return TRUE; + return GDK_EVENT_STOP; } /* toggle the switch if the handle was clicked but a drag had not been @@ -235,7 +243,7 @@ gtk_switch_button_release (GtkWidget *widget, { gtk_switch_set_active (GTK_SWITCH (widget), !priv->is_active); - return TRUE; + return GDK_EVENT_STOP; } /* dragged toggle */ @@ -259,10 +267,10 @@ gtk_switch_button_release (GtkWidget *widget, gtk_widget_queue_draw (widget); - return TRUE; + return GDK_EVENT_STOP; } - return FALSE; + return GDK_EVENT_PROPAGATE; } static gboolean |