diff options
author | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2020-08-07 11:42:18 -0300 |
---|---|---|
committer | Juan Pablo Ugarte <juanpablougarte@gmail.com> | 2020-08-07 13:07:38 -0300 |
commit | 03a51866c35d13d47ad5c6912b181505675c4dad (patch) | |
tree | 60cd9004710ea7ac3b2b1567b12ba90492c9f554 /gladeui/glade-project.c | |
parent | b8af75b03585adc5378eba42f6499751fe8ecb0b (diff) | |
download | glade-03a51866c35d13d47ad5c6912b181505675c4dad.tar.gz |
GladeProject: plug various glade widgets leaks.
Make sure objects retrieved with gtk_tree_model_get() are unref using g_autoptr
This fixes all missing GladeWidget leaks so now we can remove toplevel
destroy workaround and toplevels should not be leaked anymore after closing a
project.
Diffstat (limited to 'gladeui/glade-project.c')
-rw-r--r-- | gladeui/glade-project.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/gladeui/glade-project.c b/gladeui/glade-project.c index 6766b419..7970d7ff 100644 --- a/gladeui/glade-project.c +++ b/gladeui/glade-project.c @@ -291,18 +291,7 @@ glade_project_dispose (GObject *object) /* Remove objects from the project */ while (priv->tree) - { - GObject *toplevel = priv->tree->data; - - glade_project_remove_object (project, toplevel); - - /* - * FIXME: GladeWidgets are leaked so this is a workaround to make sure - * at least the runtime widgets (including windows) are destroyed! - */ - if (GTK_IS_WIDGET (toplevel)) - gtk_widget_destroy (GTK_WIDGET (toplevel)); - } + glade_project_remove_object (project, priv->tree->data); while (priv->objects) glade_project_remove_object (project, priv->objects->data); @@ -1163,7 +1152,7 @@ glade_project_model_get_value (GtkTreeModel *model, gint column, GValue *value) { - GladeWidget *widget; + g_autoptr(GladeWidget) widget = NULL; gtk_tree_model_get (GLADE_PROJECT (model)->priv->model, iter, 0, &widget, -1); @@ -1325,7 +1314,7 @@ glade_project_drag_data_get (GtkTreeDragSource *drag_source, if (gtk_tree_model_get_iter (GTK_TREE_MODEL (drag_source), &iter, path)) { - GObject *object; + g_autoptr (GObject) object = NULL; gtk_tree_model_get (GTK_TREE_MODEL (drag_source), &iter, GLADE_PROJECT_MODEL_COLUMN_OBJECT, &object, @@ -3806,6 +3795,7 @@ glade_project_get_iter_for_object (GladeProject *project, do { gtk_tree_model_get (model, iter, 0, &widget_iter, -1); + g_object_unref (widget_iter); if (widget_iter == widget) { |