diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2016-08-23 20:18:10 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2016-08-23 21:01:45 +0200 |
commit | 5d99b7d538ce5792080b616556aa9d405e16e1b8 (patch) | |
tree | 53ac9398766a8ae3d798e7c9c7a84e819d026adb /demos/gtk-demo | |
parent | e9771d642fb4ecc5fca94ff6a2a63466c3541df6 (diff) | |
download | gtk+-5d99b7d538ce5792080b616556aa9d405e16e1b8.tar.gz |
demos: Use stateful actions for rings/strips in "Touch and Drawing Tablets" demo
https://bugzilla.gnome.org/show_bug.cgi?id=770026
Diffstat (limited to 'demos/gtk-demo')
-rw-r--r-- | demos/gtk-demo/event_axes.c | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/demos/gtk-demo/event_axes.c b/demos/gtk-demo/event_axes.c index 75047a1a0e..9d088e62cb 100644 --- a/demos/gtk-demo/event_axes.c +++ b/demos/gtk-demo/event_axes.c @@ -536,19 +536,35 @@ reset_label_text_timeout_cb (gpointer user_data) } static void +update_label_and_timeout (GtkWidget *label, + const gchar *text) +{ + if (pad_action_timeout_id) + g_source_remove (pad_action_timeout_id); + + update_label_text (label, text); + pad_action_timeout_id = g_timeout_add (200, reset_label_text_timeout_cb, label); +} + +static void on_action_activate (GSimpleAction *action, GVariant *parameter, gpointer user_data) { GtkWidget *label = user_data; const gchar *result; - - if (pad_action_timeout_id) - g_source_remove (pad_action_timeout_id); + gchar *str; result = g_object_get_data (G_OBJECT (action), "action-result"); - update_label_text (label, result); - pad_action_timeout_id = g_timeout_add (200, reset_label_text_timeout_cb, label); + + if (!parameter) + update_label_and_timeout (label, result); + else + { + str = g_strdup_printf ("%s %.2f", result, g_variant_get_double (parameter)); + update_label_and_timeout (label, str); + g_free (str); + } } static void @@ -567,7 +583,16 @@ init_pad_controller (GtkWidget *window, for (i = 0; i < G_N_ELEMENTS (pad_actions); i++) { - action = g_simple_action_new (pad_actions[i].action_name, NULL); + if (pad_actions[i].type == GTK_PAD_ACTION_BUTTON) + { + action = g_simple_action_new (pad_actions[i].action_name, NULL); + } + else + { + action = g_simple_action_new_stateful (pad_actions[i].action_name, + G_VARIANT_TYPE_DOUBLE, NULL); + } + g_signal_connect (action, "activate", G_CALLBACK (on_action_activate), label); g_object_set_data (G_OBJECT (action), "action-result", |