From 8bf3ff8698d72468750ad9903c2fde6a7b0da7e0 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Fri, 18 Oct 2019 15:45:34 -0300 Subject: [PATCH] Changing action notifications to use pspec. --- src/actions/abstract.c | 38 ++++++++++++++++++++++---------------- src/actions/private.h | 5 +++++ 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/actions/abstract.c b/src/actions/abstract.c index cea7cf0..8c61ef0 100644 --- a/src/actions/abstract.c +++ b/src/actions/abstract.c @@ -111,14 +111,6 @@ G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, PROP_ENABLED, - g_param_spec_boolean ("enabled", - N_("Enabled"), - N_("If the action can be activated"), - TRUE, - G_PARAM_READWRITE | - G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, PROP_STATE_TYPE, g_param_spec_boxed ("state-type", N_("State Type"), @@ -127,14 +119,31 @@ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); - g_object_class_install_property (object_class, PROP_STATE, - g_param_spec_variant ("state", + // Enabled property + klass->properties.enabled = + g_param_spec_boolean( + "enabled", + N_("Enabled"), + N_("If the action can be activated"), + TRUE, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS + ); + + g_object_class_install_property(object_class, PROP_ENABLED, klass->properties.enabled); + + // State property + klass->properties.state = + g_param_spec_variant( + "state", N_("State"), N_("The state the action is in"), G_VARIANT_TYPE_ANY, NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT | - G_PARAM_STATIC_STRINGS)); + G_PARAM_STATIC_STRINGS + ); + + g_object_class_install_property (object_class, PROP_STATE, klass->properties.state); // Install signals action_signals[SIGNAL_CHANGE_STATE] = @@ -327,7 +336,7 @@ g_signal_emit(object, action_signals[SIGNAL_CHANGE_STATE], 0, value); } - g_object_notify(G_OBJECT(object), "state"); + g_object_notify_by_pspec(G_OBJECT(object), PW3270_ACTION_GET_CLASS(object)->properties.state); } @@ -338,10 +347,7 @@ } void pw3270_action_set_enabled(GAction *object, gboolean state) { - -// pw3270Action * action = PW3270_ACTION(object); - - g_object_notify(G_OBJECT(object), "enabled"); + g_object_notify_by_pspec(G_OBJECT(object), PW3270_ACTION_GET_CLASS(object)->properties.enabled); } diff --git a/src/actions/private.h b/src/actions/private.h index 772998f..3c3e582 100644 --- a/src/actions/private.h +++ b/src/actions/private.h @@ -64,6 +64,11 @@ struct _pw3270ActionClass { GObjectClass parent_class; + struct { + GParamSpec * state; + GParamSpec * enabled; + } properties; + void (*change_widget)(GAction *action, GtkWidget *from, GtkWidget *to); gboolean (*get_enabled)(GAction *action, GtkWidget *terminal); void (*activate)(GAction *action, GVariant *parameter, GtkWidget *terminal); -- libgit2 0.21.2