From: Matthias Clasen Date: Tue, 4 Oct 2022 11:08:25 +0000 (-0400) Subject: inspector: Fix some lifecycle issues X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~9^2~206^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e68b365fa19486c32cbe25a4073b8251557d015c;p=gtk4.git 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. --- 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 @@