libsysprof-ui: clean up and remove child widgets

This commit is contained in:
Christian Hergert
2021-10-01 15:34:28 -07:00
parent f4b8dccb52
commit 6be7087c74
4 changed files with 41 additions and 3 deletions

View File

@ -77,10 +77,25 @@ _g_date_time_new_from_iso8601 (const gchar *str,
} }
#endif #endif
static void
sysprof_details_page_dispose (GObject *object)
{
SysprofDetailsPage *self = (SysprofDetailsPage *)object;
GtkWidget *child;
while ((child = gtk_widget_get_first_child (GTK_WIDGET (self))))
gtk_widget_unparent (child);
G_OBJECT_CLASS (sysprof_details_page_parent_class)->dispose (object);
}
static void static void
sysprof_details_page_class_init (SysprofDetailsPageClass *klass) sysprof_details_page_class_init (SysprofDetailsPageClass *klass)
{ {
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->dispose = sysprof_details_page_dispose;
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sysprof-details-page.ui"); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/sysprof/ui/sysprof-details-page.ui");
gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);

View File

@ -30,11 +30,26 @@ sysprof_failed_state_view_new (void)
return g_object_new (SYSPROF_TYPE_FAILED_STATE_VIEW, NULL); return g_object_new (SYSPROF_TYPE_FAILED_STATE_VIEW, NULL);
} }
static void
sysprof_failed_state_view_dispose (GObject *object)
{
SysprofFailedStateView *self = (SysprofFailedStateView *)object;
GtkWidget *child;
while ((child = gtk_widget_get_first_child (GTK_WIDGET (self))))
gtk_widget_unparent (child);
G_OBJECT_CLASS (sysprof_failed_state_view_parent_class)->dispose (object);
}
static void static void
sysprof_failed_state_view_class_init (SysprofFailedStateViewClass *klass) sysprof_failed_state_view_class_init (SysprofFailedStateViewClass *klass)
{ {
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->dispose = sysprof_failed_state_view_dispose;
gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT);
gtk_widget_class_set_template_from_resource (widget_class, gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/sysprof/ui/sysprof-failed-state-view.ui"); "/org/gnome/sysprof/ui/sysprof-failed-state-view.ui");

View File

@ -83,6 +83,10 @@ sysprof_recording_state_view_dispose (GObject *object)
{ {
SysprofRecordingStateView *self = (SysprofRecordingStateView *)object; SysprofRecordingStateView *self = (SysprofRecordingStateView *)object;
SysprofRecordingStateViewPrivate *priv = sysprof_recording_state_view_get_instance_private (self); SysprofRecordingStateViewPrivate *priv = sysprof_recording_state_view_get_instance_private (self);
GtkWidget *child;
while ((child = gtk_widget_get_first_child (GTK_WIDGET (self))))
gtk_widget_unparent (child);
if (priv->profiler != NULL) if (priv->profiler != NULL)
{ {

View File

@ -373,13 +373,17 @@ sysprof_visualizers_frame_size_allocate (GtkWidget *widget,
} }
static void static void
sysprof_visualizers_frame_finalize (GObject *object) sysprof_visualizers_frame_dispose (GObject *object)
{ {
SysprofVisualizersFrame *self = (SysprofVisualizersFrame *)object; SysprofVisualizersFrame *self = (SysprofVisualizersFrame *)object;
GtkWidget *child;
while ((child = gtk_widget_get_first_child (GTK_WIDGET (self))))
gtk_widget_unparent (child);
g_clear_object (&self->selection); g_clear_object (&self->selection);
G_OBJECT_CLASS (sysprof_visualizers_frame_parent_class)->finalize (object); G_OBJECT_CLASS (sysprof_visualizers_frame_parent_class)->dispose (object);
} }
static void static void
@ -411,7 +415,7 @@ sysprof_visualizers_frame_class_init (SysprofVisualizersFrameClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
object_class->finalize = sysprof_visualizers_frame_finalize; object_class->dispose = sysprof_visualizers_frame_dispose;
object_class->get_property = sysprof_visualizers_frame_get_property; object_class->get_property = sysprof_visualizers_frame_get_property;
widget_class->size_allocate = sysprof_visualizers_frame_size_allocate; widget_class->size_allocate = sysprof_visualizers_frame_size_allocate;