summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-05-02 19:09:17 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-05-02 19:15:37 +0000
commite07f3d6e641defa6918d5eb2dc725b4fc38b0139 (patch)
tree9df09fb2f025f1fc3252f215f82292fbf1d373bc
parentb844778b5b5e0e113c361e42ac98debeb40da5b7 (diff)
downloadgtk+-event-controller-responsive.tar.gz
spin button: Listen for ::cancel on gesturesevent-controller-responsive
Otherwise, we keep spinning when we should stop. Closes: https://gitlab.gnome.org/GNOME/gtk/issues/1861
-rw-r--r--gtk/gtkspinbutton.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c
index b273b2e30d..b038feb444 100644
--- a/gtk/gtkspinbutton.c
+++ b/gtk/gtkspinbutton.c
@@ -810,6 +810,14 @@ button_released_cb (GtkGestureMultiPress *gesture,
}
static void
+button_cancel_cb (GtkGesture *gesture,
+ GdkEventSequence *sequence,
+ GtkSpinButton *spin_button)
+{
+ gtk_spin_button_stop_spinning (spin_button);
+}
+
+static void
key_controller_key_released (GtkEventControllerKey *key,
guint keyval,
guint keycode,
@@ -886,6 +894,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
GTK_PHASE_CAPTURE);
g_signal_connect (gesture, "pressed", G_CALLBACK (button_pressed_cb), spin_button);
g_signal_connect (gesture, "released", G_CALLBACK (button_released_cb), spin_button);
+ g_signal_connect (gesture, "cancel", G_CALLBACK (button_cancel_cb), spin_button);
gtk_widget_add_controller (GTK_WIDGET (priv->down_button), GTK_EVENT_CONTROLLER (gesture));
priv->up_button = gtk_button_new ();
@@ -902,6 +911,7 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
GTK_PHASE_CAPTURE);
g_signal_connect (gesture, "pressed", G_CALLBACK (button_pressed_cb), spin_button);
g_signal_connect (gesture, "released", G_CALLBACK (button_released_cb), spin_button);
+ g_signal_connect (gesture, "cancel", G_CALLBACK (button_cancel_cb), spin_button);
gtk_widget_add_controller (GTK_WIDGET (priv->up_button), GTK_EVENT_CONTROLLER (gesture));
gtk_spin_button_set_adjustment (spin_button, NULL);