summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-07 09:16:21 -0400
committerMatthias Clasen <mclasen@redhat.com>2023-04-07 09:16:21 -0400
commit6c97667be1045581731dc06cc63dd711413956c6 (patch)
tree7ecfd10e71d3edb9a23f0622448df0b0636e1f3a
parentce597cf034f10ce731de1ccd64002d2e3cb6baf1 (diff)
downloadgtk+-6c97667be1045581731dc06cc63dd711413956c6.tar.gz
inspector: Be more careful
Tweak the variant-editor code to handle some cases more explicitly.
-rw-r--r--gtk/inspector/variant-editor.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gtk/inspector/variant-editor.c b/gtk/inspector/variant-editor.c
index cf8a16a3fc..e81131256b 100644
--- a/gtk/inspector/variant-editor.c
+++ b/gtk/inspector/variant-editor.c
@@ -66,10 +66,11 @@ dispose (GObject *object)
GtkInspectorVariantEditor *self = GTK_INSPECTOR_VARIANT_EDITOR (object);
if (self->editor)
- {
+ {
g_signal_handlers_disconnect_by_func (self->editor, variant_editor_changed_cb, self->data);
gtk_widget_unparent (self->editor);
+ self->editor = NULL;
}
G_OBJECT_CLASS (gtk_inspector_variant_editor_parent_class)->dispose (object);
@@ -94,6 +95,8 @@ ensure_editor (GtkInspectorVariantEditor *self,
g_variant_type_equal (self->type, type))
return;
+ self->type = type;
+
if (g_variant_type_equal (type, G_VARIANT_TYPE_BOOLEAN))
{
if (self->editor)
@@ -102,6 +105,8 @@ ensure_editor (GtkInspectorVariantEditor *self,
self->editor = gtk_toggle_button_new_with_label ("FALSE");
g_signal_connect (self->editor, "notify::active",
G_CALLBACK (variant_editor_changed_cb), self);
+
+ gtk_widget_set_parent (self->editor, GTK_WIDGET (self));
}
else if (g_variant_type_equal (type, G_VARIANT_TYPE_STRING))
{
@@ -112,6 +117,8 @@ ensure_editor (GtkInspectorVariantEditor *self,
gtk_editable_set_width_chars (GTK_EDITABLE (self->editor), 10);
g_signal_connect (self->editor, "notify::text",
G_CALLBACK (variant_editor_changed_cb), self);
+
+ gtk_widget_set_parent (self->editor, GTK_WIDGET (self));
}
else if (!GTK_IS_BOX (self->editor))
{
@@ -128,10 +135,9 @@ ensure_editor (GtkInspectorVariantEditor *self,
gtk_box_append (GTK_BOX (self->editor), label);
g_signal_connect (entry, "notify::text",
G_CALLBACK (variant_editor_changed_cb), self);
- }
- self->type = type;
- gtk_widget_set_parent (self->editor, GTK_WIDGET (self));
+ gtk_widget_set_parent (self->editor, GTK_WIDGET (self));
+ }
}
GtkWidget *