diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-04-07 12:58:10 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-04-07 13:45:12 -0400 |
commit | 3eabcde8684dea8d41e27cb1fe779f08e5ac542a (patch) | |
tree | eb488a2376dfd9d39ab233d748cf4ab709b27bf0 | |
parent | 76640487799b6c88c84acc01e2dc1af3b754a9e1 (diff) | |
download | gtk+-3eabcde8684dea8d41e27cb1fe779f08e5ac542a.tar.gz |
inspector: Simplify the action editor
No need to listen for changes, the actions list
code will do so and tell us to update.
-rw-r--r-- | gtk/inspector/action-editor.c | 99 | ||||
-rw-r--r-- | gtk/inspector/action-editor.h | 4 |
2 files changed, 22 insertions, 81 deletions
diff --git a/gtk/inspector/action-editor.c b/gtk/inspector/action-editor.c index 666ff0e18d..ba838fbaf7 100644 --- a/gtk/inspector/action-editor.c +++ b/gtk/inspector/action-editor.c @@ -53,8 +53,7 @@ enum { PROP_0, PROP_OWNER, - PROP_NAME, - PROP_SIZEGROUP + PROP_NAME }; G_DEFINE_TYPE (GtkInspectorActionEditor, gtk_inspector_action_editor, GTK_TYPE_WIDGET) @@ -73,6 +72,7 @@ activate_action (GtkWidget *button, g_action_group_activate_action (G_ACTION_GROUP (r->owner), r->name, parameter); else if (GTK_IS_ACTION_MUXER (r->owner)) gtk_action_muxer_activate_action (GTK_ACTION_MUXER (r->owner), r->name, parameter); + update_widgets (r); } @@ -97,13 +97,17 @@ state_changed (GtkWidget *editor, GVariant *value; value = gtk_inspector_variant_editor_get_value (editor); - if (value) - { - if (G_IS_ACTION_GROUP (r->owner)) - g_action_group_change_action_state (G_ACTION_GROUP (r->owner), r->name, value); - else if (GTK_IS_ACTION_MUXER (r->owner)) - gtk_action_muxer_change_action_state (GTK_ACTION_MUXER (r->owner), r->name, value); - } + if (!value) + return; + + g_variant_ref_sink (value); + + if (G_IS_ACTION_GROUP (r->owner)) + g_action_group_change_action_state (G_ACTION_GROUP (r->owner), r->name, value); + else if (GTK_IS_ACTION_MUXER (r->owner)) + gtk_action_muxer_change_action_state (GTK_ACTION_MUXER (r->owner), r->name, value); + + g_variant_unref (value); } static void @@ -141,48 +145,6 @@ gtk_inspector_action_editor_init (GtkInspectorActionEditor *r) } static void -update_enabled (GtkInspectorActionEditor *r, - gboolean enabled) -{ - r->enabled = enabled; - if (r->parameter_entry) - { - gtk_widget_set_sensitive (r->parameter_entry, enabled); - parameter_changed (r->parameter_entry, r); - } - if (r->activate_button) - gtk_widget_set_sensitive (r->activate_button, enabled); -} - -static void -action_enabled_changed_cb (GActionGroup *group, - const char *action_name, - gboolean enabled, - GtkInspectorActionEditor *r) -{ - if (g_str_equal (action_name, r->name)) - update_enabled (r, enabled); -} - -static void -update_state (GtkInspectorActionEditor *r, - GVariant *state) -{ - if (r->state_entry) - gtk_inspector_variant_editor_set_value (r->state_entry, state); -} - -static void -action_state_changed_cb (GActionGroup *group, - const char *action_name, - GVariant *state, - GtkInspectorActionEditor *r) -{ - if (g_str_equal (action_name, r->name)) - update_state (r, state); -} - -static void update_widgets (GtkInspectorActionEditor *r) { GVariant *state; @@ -232,14 +194,6 @@ update_widgets (GtkInspectorActionEditor *r) g_variant_unref (state); } - - if (G_IS_ACTION_GROUP (r->owner)) - { - g_signal_connect (r->owner, "action-enabled-changed", - G_CALLBACK (action_enabled_changed_cb), r); - g_signal_connect (r->owner, "action-state-changed", - G_CALLBACK (action_state_changed_cb), r); - } } static void @@ -248,18 +202,12 @@ dispose (GObject *object) GtkInspectorActionEditor *r = GTK_INSPECTOR_ACTION_EDITOR (object); GtkWidget *child; - g_free (r->name); - if (r->state_type) - g_variant_type_free (r->state_type); - if (r->owner) - { - g_signal_handlers_disconnect_by_func (r->owner, action_enabled_changed_cb, r); - g_signal_handlers_disconnect_by_func (r->owner, action_state_changed_cb, r); - } - while ((child = gtk_widget_get_first_child (GTK_WIDGET (r)))) gtk_widget_unparent (child); + g_clear_pointer (&r->name, g_free); + g_clear_pointer (&r->state_type, g_variant_type_free); + G_OBJECT_CLASS (gtk_inspector_action_editor_parent_class)->dispose (object); } @@ -298,12 +246,10 @@ set_property (GObject *object, switch (param_id) { case PROP_OWNER: - if (r->owner) - { - g_signal_handlers_disconnect_by_func (r->owner, action_enabled_changed_cb, r); - g_signal_handlers_disconnect_by_func (r->owner, action_state_changed_cb, r); - } r->owner = g_value_get_object (value); + g_assert (r->owner == NULL || + G_IS_ACTION_GROUP (r->owner) || + GTK_IS_ACTION_MUXER (r->owner)); break; case PROP_NAME: @@ -354,10 +300,7 @@ gtk_inspector_action_editor_set (GtkInspectorActionEditor *self, } void -gtk_inspector_action_editor_update (GtkInspectorActionEditor *r, - gboolean enabled, - GVariant *state) +gtk_inspector_action_editor_update (GtkInspectorActionEditor *self) { - update_enabled (r, enabled); - update_state (r, state); + update_widgets (self); } diff --git a/gtk/inspector/action-editor.h b/gtk/inspector/action-editor.h index 39f6690233..12b7f485b0 100644 --- a/gtk/inspector/action-editor.h +++ b/gtk/inspector/action-editor.h @@ -36,9 +36,7 @@ GtkWidget *gtk_inspector_action_editor_new (void); void gtk_inspector_action_editor_set (GtkInspectorActionEditor *self, GObject *owner, const char *name); -void gtk_inspector_action_editor_update (GtkInspectorActionEditor *self, - gboolean enabled, - GVariant *state); +void gtk_inspector_action_editor_update (GtkInspectorActionEditor *self); G_END_DECLS |