From e68b365fa19486c32cbe25a4073b8251557d015c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 4 Oct 2022 07:08:25 -0400 Subject: [PATCH] inspector: Fix some lifecycle issues The template use in the inspector was not properly disposing all widgets. gtk_widget_dispose_template will only unparent widgets that have been named as template children, so we need to make the toplevel elements in the ui file named children, or manually dispose them. This commit does the former. --- gtk/inspector/actions.c | 2 ++ gtk/inspector/actions.ui | 2 +- gtk/inspector/list-data.c | 4 ++++ gtk/inspector/list-data.ui | 4 ++-- gtk/inspector/logs.c | 2 ++ gtk/inspector/logs.ui | 2 +- gtk/inspector/tree-data.c | 4 ++++ gtk/inspector/tree-data.ui | 4 ++-- 8 files changed, 18 insertions(+), 6 deletions(-) diff --git a/gtk/inspector/actions.c b/gtk/inspector/actions.c index 24afc47856..99ec6fffed 100644 --- a/gtk/inspector/actions.c +++ b/gtk/inspector/actions.c @@ -40,6 +40,7 @@ struct _GtkInspectorActions { GtkWidget parent; + GtkWidget *swin; GtkWidget *list; GtkWidget *button; @@ -446,6 +447,7 @@ gtk_inspector_actions_class_init (GtkInspectorActionsClass *klass) GTK_TYPE_WIDGET, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/actions.ui"); + gtk_widget_class_bind_template_child (widget_class, GtkInspectorActions, swin); gtk_widget_class_bind_template_child (widget_class, GtkInspectorActions, list); gtk_widget_class_bind_template_child (widget_class, GtkInspectorActions, name); gtk_widget_class_bind_template_callback (widget_class, setup_name_cb); diff --git a/gtk/inspector/actions.ui b/gtk/inspector/actions.ui index 6b5982555b..a48b0ba638 100644 --- a/gtk/inspector/actions.ui +++ b/gtk/inspector/actions.ui @@ -5,7 +5,7 @@ - + 1 1 never diff --git a/gtk/inspector/list-data.c b/gtk/inspector/list-data.c index c56defef95..149b4af113 100644 --- a/gtk/inspector/list-data.c +++ b/gtk/inspector/list-data.c @@ -36,6 +36,8 @@ struct _GtkInspectorListData { GtkWidget parent_instance; + GtkWidget *box; + GtkWidget *swin; GListModel *object; GtkColumnView *view; GtkWidget *items_label; @@ -205,6 +207,8 @@ gtk_inspector_list_data_class_init (GtkInspectorListDataClass *klass) object_class->dispose = dispose; gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/list-data.ui"); + gtk_widget_class_bind_template_child (widget_class, GtkInspectorListData, box); + gtk_widget_class_bind_template_child (widget_class, GtkInspectorListData, swin); gtk_widget_class_bind_template_child (widget_class, GtkInspectorListData, view); gtk_widget_class_bind_template_child (widget_class, GtkInspectorListData, items_label); diff --git a/gtk/inspector/list-data.ui b/gtk/inspector/list-data.ui index d3124ed548..2403d36581 100644 --- a/gtk/inspector/list-data.ui +++ b/gtk/inspector/list-data.ui @@ -1,7 +1,7 @@