From 543b7e796f481d717a59ed245f153aa8b1e53b79 Mon Sep 17 00:00:00 2001 From: Perry Werneck Date: Fri, 27 Dec 2019 14:30:40 -0300 Subject: [PATCH] Fixing toggle action. --- src/objects/actions/lib3270/toggle.c | 48 ++++++++++++++++++------------------------------ src/objects/window/window.c | 3 +-- 2 files changed, 19 insertions(+), 32 deletions(-) diff --git a/src/objects/actions/lib3270/toggle.c b/src/objects/actions/lib3270/toggle.c index 239c988..fe9e793 100644 --- a/src/objects/actions/lib3270/toggle.c +++ b/src/objects/actions/lib3270/toggle.c @@ -41,17 +41,15 @@ #define LIB3270_TOGGLE_ACTION(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), LIB3270_TYPE_TOGGLE_ACTION, Lib3270ToggleAction)) #define LIB3270_IS_TOGGLE_ACTION(inst) (G_TYPE_CHECK_INSTANCE_TYPE ((inst), LIB3270_TYPE_TOGGLE_ACTION)) + #define GET_DESCRIPTOR(obj) ((const LIB3270_TOGGLE *) ((V3270Action *) obj)->info) + typedef struct _Lib3270ToggleActionClass { V3270ActionClass parent_class; - } Lib3270ToggleActionClass; typedef struct _Lib3270ToggleAction { V3270Action parent; - - const LIB3270_TOGGLE * definition; const void * listener; - } Lib3270ToggleAction; static void Lib3270ToggleAction_class_init(Lib3270ToggleActionClass *klass); @@ -68,10 +66,10 @@ Lib3270ToggleAction * action = LIB3270_TOGGLE_ACTION(object); if(action->listener) - lib3270_unregister_toggle_listener(v3270_get_session(from),action->definition->id,object); + lib3270_unregister_toggle_listener(v3270_get_session(from),GET_DESCRIPTOR(object)->id,object); if(to) - action->listener = lib3270_register_toggle_listener(v3270_get_session(to),action->definition->id,change_state,object); + action->listener = lib3270_register_toggle_listener(v3270_get_session(to),GET_DESCRIPTOR(object)->id,change_state,object); V3270_ACTION_CLASS(Lib3270ToggleAction_parent_class)->change_widget(object,from,to); @@ -79,53 +77,45 @@ static void activate(GAction *action, GVariant *parameter, GtkWidget *terminal) { - debug("Activating \"%s\"",pw3270_action_get_name(action)); + debug("Activating \"%s\"",g_action_get_name(action)); if(parameter && g_variant_is_of_type(parameter,G_VARIANT_TYPE_BOOLEAN)) { - lib3270_set_toggle(v3270_get_session(terminal),LIB3270_TOGGLE_ACTION(action)->definition->id,g_variant_get_boolean(parameter)); - debug("Toggle set to %s",lib3270_get_toggle(v3270_get_session(terminal),LIB3270_TOGGLE_ACTION(action)->definition->id) ? "ON" : "OFF"); + lib3270_set_toggle(v3270_get_session(terminal),GET_DESCRIPTOR(action)->id,g_variant_get_boolean(parameter)); + debug("Toggle set to %s",lib3270_get_toggle(v3270_get_session(terminal),GET_DESCRIPTOR(action)->id) ? "ON" : "OFF"); } else { - lib3270_toggle(v3270_get_session(terminal),LIB3270_TOGGLE_ACTION(action)->definition->id); - debug("Toggle is %s",lib3270_get_toggle(v3270_get_session(terminal),LIB3270_TOGGLE_ACTION(action)->definition->id) ? "ON" : "OFF"); + lib3270_toggle(v3270_get_session(terminal),GET_DESCRIPTOR(action)->id); + debug("Toggle is %s",lib3270_get_toggle(v3270_get_session(terminal),GET_DESCRIPTOR(action)->id) ? "ON" : "OFF"); } } - void Lib3270ToggleAction_class_init(Lib3270ToggleActionClass *klass) { - - klass->parent_class.change_widget = change_widget; - - } - - static GVariant * get_state_property(GAction *action, GtkWidget *terminal) { + static GVariant * get_state(GAction *action, GtkWidget *terminal) { debug("%s(%s)",__FUNCTION__,g_action_get_name(action)); return g_variant_new_boolean( lib3270_get_toggle( v3270_get_session(terminal), - LIB3270_TOGGLE_ACTION(action)->definition->id + GET_DESCRIPTOR(action)->id ) ); } - void Lib3270ToggleAction_init(Lib3270ToggleAction *action) { - - action->definition = NULL; - action->listener = NULL; - -// action->parent.name = "toggle"; + void Lib3270ToggleAction_class_init(Lib3270ToggleActionClass *klass) { - action->parent.get_state_property = get_state_property; - action->parent.activate = activate; + klass->parent_class.change_widget = change_widget; + klass->parent_class.state.type = G_VARIANT_TYPE_BOOLEAN; + klass->parent_class.get_state = get_state; - action->parent.types.state = G_VARIANT_TYPE_BOOLEAN; + } + void Lib3270ToggleAction_init(Lib3270ToggleAction *action) { + action->parent.activate = activate; } GAction * g_action_new_from_toggle(const LIB3270_TOGGLE * definition) { @@ -134,8 +124,6 @@ action->parent.info = (const LIB3270_PROPERTY *) definition; - action->definition = definition; - return G_ACTION(action); } diff --git a/src/objects/window/window.c b/src/objects/window/window.c index 92fdd33..1deff41 100644 --- a/src/objects/window/window.c +++ b/src/objects/window/window.c @@ -185,7 +185,6 @@ } -/* #ifdef DEBUG { @@ -202,6 +201,7 @@ debug("Action: %s",g_action_get_name(actions[ix])); debug("\tState-type:\t\t%s",g_action_get_state_type(actions[ix])); + debug("\tState value:\t%p",g_action_get_state(actions[ix])); debug("\tParameter-type:\t%s",g_action_get_parameter_type(actions[ix])); } @@ -209,7 +209,6 @@ } #endif // DEBUG -*/ } -- libgit2 0.21.2