summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-07 12:58:10 -0400
committerMatthias Clasen <mclasen@redhat.com>2023-04-21 09:09:40 +0200
commit1ab18855401f256507fe7d45e0907e1804983701 (patch)
treef6104bb899802338d8e4012fa8531bcba1387007
parent3f1a083cfaa0a16776de55d600b64473713a5201 (diff)
downloadgtk+-1ab18855401f256507fe7d45e0907e1804983701.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.c99
-rw-r--r--gtk/inspector/action-editor.h4
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 c918a9a55c..14bf3ce9f8 100644
--- a/gtk/inspector/action-editor.h
+++ b/gtk/inspector/action-editor.h
@@ -37,9 +37,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