summaryrefslogtreecommitdiff
path: root/gladeui/glade-project.c
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2020-08-07 11:42:18 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2020-08-07 13:07:38 -0300
commit03a51866c35d13d47ad5c6912b181505675c4dad (patch)
tree60cd9004710ea7ac3b2b1567b12ba90492c9f554 /gladeui/glade-project.c
parentb8af75b03585adc5378eba42f6499751fe8ecb0b (diff)
downloadglade-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.c18
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)
{