inspector: Fix some lifecycle issues
authorMatthias Clasen <mclasen@redhat.com>
Tue, 4 Oct 2022 11:08:25 +0000 (07:08 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 4 Oct 2022 11:10:35 +0000 (07:10 -0400)
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
gtk/inspector/actions.ui
gtk/inspector/list-data.c
gtk/inspector/list-data.ui
gtk/inspector/logs.c
gtk/inspector/logs.ui
gtk/inspector/tree-data.c
gtk/inspector/tree-data.ui

index 24afc478567c018171a31ef17d9e89342e0482cd..99ec6fffed99d6db72f8d4e442b7ac7f371cc789 100644 (file)
@@ -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);
index 6b5982555bc27fa029595f2a414a2d015983c50e..a48b0ba638fe1a92d83dc1a9fdbb189ae59d0fed 100644 (file)
@@ -5,7 +5,7 @@
       <class name="view"/>
     </style>
     <child>
-      <object class="GtkScrolledWindow">
+      <object class="GtkScrolledWindow" id="swin">
         <property name="hexpand">1</property>
         <property name="vexpand">1</property>
         <property name="hscrollbar-policy">never</property>
index c56defef951da858cff8d1a5a36c9d0d34be4350..149b4af11366c3a49e585dcf91d71228ff36641a 100644 (file)
@@ -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);
 
index d3124ed548e88cc5662994555308b10ec0d00143..2403d36581adf336bf223dc27928d20ac6b8d180 100644 (file)
@@ -1,7 +1,7 @@
 <interface domain="gtk40">
   <template class="GtkInspectorListData" parent="GtkWidget">
     <child>
-      <object class="GtkBox">
+      <object class="GtkBox" id="box">
         <property name="spacing">6</property>
         <property name="margin-start">6</property>
         <property name="margin-end">6</property>
@@ -16,7 +16,7 @@
       </object>
     </child>
     <child>
-      <object class="GtkScrolledWindow">
+      <object class="GtkScrolledWindow" id="swin">
         <property name="hexpand">1</property>
         <property name="vexpand">1</property>
         <property name="vscrollbar-policy">always</property>
index 7872838145b5d4ee0508f845c48686b7277749fc..d0e6fc9b3d28f5d5d477a17c3e9b3cfe320e5780 100644 (file)
@@ -47,6 +47,7 @@ struct _GtkInspectorLogs
 {
   GtkWidget parent;
 
+  GtkWidget *box;
   GtkWidget *events;
   GtkWidget *misc;
   GtkWidget *dnd;
@@ -185,6 +186,7 @@ gtk_inspector_logs_class_init (GtkInspectorLogsClass *klass)
   object_class->dispose = dispose;
 
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/logs.ui");
+  gtk_widget_class_bind_template_child (widget_class, GtkInspectorLogs, box);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorLogs, events);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorLogs, misc);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorLogs, dnd);
index fc457c8a9e1e19ddeb4df9da2292ecd97c0becef..89e01dc42fe489300ee7a3794555bc4c32cb794c 100644 (file)
@@ -1,7 +1,7 @@
 <interface domain="gtk40">
   <template class="GtkInspectorLogs" parent="GtkWidget">
     <child>
-      <object class="GtkBox">
+      <object class="GtkBox" id="box">
         <property name="margin-start">20</property>
         <property name="margin-end">20</property>
         <property name="margin-top">20</property>
index b0e23c293323c34c08fc2f2ff4f7a65bbcd90258..42cec69a84ffee45d9cad7128e62e69b1aa6dc04 100644 (file)
@@ -35,6 +35,8 @@ struct _GtkInspectorTreeData
 {
   GtkWidget parent_instance;
 
+  GtkWidget *box;
+  GtkWidget *swin;
   GtkTreeModel *object;
   GtkTreeModel *types;
   GtkTreeView *view;
@@ -190,6 +192,8 @@ gtk_inspector_tree_data_class_init (GtkInspectorTreeDataClass *klass)
   object_class->dispose = dispose;
 
   gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/libgtk/inspector/tree-data.ui");
+  gtk_widget_class_bind_template_child (widget_class, GtkInspectorTreeData, box);
+  gtk_widget_class_bind_template_child (widget_class, GtkInspectorTreeData, swin);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorTreeData, view);
   gtk_widget_class_bind_template_child (widget_class, GtkInspectorTreeData, object_title);
   gtk_widget_class_bind_template_callback (widget_class, toggle_show);
index d06c228136f0b86f8c15f851dd93243dc073100a..9e0d98148b91465d8d06548d379a092bf9929d7a 100644 (file)
@@ -1,7 +1,7 @@
 <interface domain="gtk40">
   <template class="GtkInspectorTreeData" parent="GtkWidget">
     <child>
-      <object class="GtkBox">
+      <object class="GtkBox" id="box">
         <style>
           <class name="toolbar"/>
         </style>
@@ -21,7 +21,7 @@
       </object>
     </child>
     <child>
-      <object class="GtkScrolledWindow">
+      <object class="GtkScrolledWindow" id="swin">
         <property name="hexpand">1</property>
         <property name="vexpand">1</property>
         <property name="vscrollbar-policy">always</property>