[gtk/matthiasc/for-master: 138/140] spinbutton: Make buttons clickable
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/for-master: 138/140] spinbutton: Make buttons clickable
- Date: Thu, 15 Oct 2020 20:11:56 +0000 (UTC)
commit 65dea929bca7cc970f1cb674d0a06bf4a0038ea4
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Oct 15 15:42:15 2020 -0400
spinbutton: Make buttons clickable
We steal events from the buttons to implement our
own behaviors, but buttons can also be "clicked"
by a11y actions, so support that as well.
gtk/gtkspinbutton.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
---
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c
index b0ff1672f0..6f5d6945f0 100644
--- a/gtk/gtkspinbutton.c
+++ b/gtk/gtkspinbutton.c
@@ -862,6 +862,17 @@ start_spinning (GtkSpinButton *spin,
gtk_spin_button_real_spin (spin, click_child == spin->up_button ? step : -step);
}
+static void
+button_clicked_cb (GtkButton *button,
+ gpointer user_data)
+{
+ GtkSpinButton *spin = user_data;
+ double step;
+
+ step = gtk_adjustment_get_step_increment (spin->adjustment);
+ gtk_spin_button_real_spin (spin, GTK_WIDGET (button) == spin->up_button ? step : -step);
+}
+
static void
button_pressed_cb (GtkGestureClick *gesture,
int n_pressses,
@@ -989,6 +1000,9 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
gtk_widget_set_can_focus (spin_button->down_button, FALSE);
gtk_widget_set_parent (spin_button->down_button, GTK_WIDGET (spin_button));
+ g_signal_connect (spin_button->down_button, "clicked",
+ G_CALLBACK (button_clicked_cb), spin_button);
+
gesture = gtk_gesture_click_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), FALSE);
@@ -1006,6 +1020,9 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
gtk_widget_set_can_focus (spin_button->up_button, FALSE);
gtk_widget_set_parent (spin_button->up_button, GTK_WIDGET (spin_button));
+ g_signal_connect (spin_button->down_button, "clicked",
+ G_CALLBACK (button_clicked_cb), spin_button);
+
gesture = gtk_gesture_click_new ();
gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), 0);
gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]