Commit e9a127ca authored by Tristan Van Berkom's avatar Tristan Van Berkom
Browse files

* gladeui/glade-project.c, gladeui/glade-property-class.c, gladeui/glade-widget-adaptor.c,

	gladeui/glade-widget.c, plugins/gtk+/glade-gtk.c, plugins/gtk+/glade-model-data.c:
	Plugged more leaks found with valgrind.
parent b48218e0
......@@ -18,6 +18,10 @@
* gladeui/glade-builtins.c: Removed _() annotations for strings that dont need to be
translated.
* gladeui/glade-project.c, gladeui/glade-property-class.c, gladeui/glade-widget-adaptor.c,
gladeui/glade-widget.c, plugins/gtk+/glade-gtk.c, plugins/gtk+/glade-model-data.c:
Plugged more leaks found with valgrind.
2011-01-15 Emilio Pozuelo Monfort <pochu27@gmail.com>
* plugins/gtk+/Makefile.am: Don't install .in files.
......
......@@ -345,7 +345,6 @@ glade_project_finalize (GObject * object)
GList *list;
TopLevelInfo *tinfo;
/* XXX FIXME: Destroy dialog related sizegroups here... */
gtk_widget_destroy (project->priv->prefs_dialog);
g_free (project->priv->path);
......@@ -4245,6 +4244,11 @@ glade_project_build_prefs_box (GladeProject * project)
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
gtk_size_group_add_widget (sizegroup3, hbox);
/* Pass ownership to the widgets in the groups */
g_object_unref (sizegroup1);
g_object_unref (sizegroup2);
g_object_unref (sizegroup3);
update_prefs_for_resource_path (project);
g_signal_connect (G_OBJECT (project->priv->resource_default_radio), "toggled",
......
......@@ -810,7 +810,7 @@ glade_property_class_make_gvalue_from_string (GladePropertyClass *
g_value_set_static_string (&str_value, strv[i]);
value_array = g_value_array_append (value_array, &str_value);
}
g_value_set_boxed (value, value_array);
g_value_take_boxed (value, value_array);
g_strfreev (strv);
}
else if (G_IS_PARAM_SPEC_BOXED (property_class->pspec))
......@@ -869,7 +869,7 @@ glade_property_class_make_gvalue_from_string (GladePropertyClass *
{
GList *objects = glade_property_class_make_objects_from_string
(property_class, string, project, widget);
g_value_set_boxed (value, objects);
g_value_take_boxed (value, objects);
}
else
g_critical ("Unsupported pspec type %s (string -> value)",
......
......@@ -911,7 +911,10 @@ glade_widget_adaptor_object_read_widget (GladeWidgetAdaptor * adaptor,
if (!(signal = glade_signal_read (iter_node, adaptor)))
continue;
/* The widget doesnt use the signal handler directly but rather
* creates it's own copy */
glade_widget_add_signal_handler (widget, signal);
g_object_unref (signal);
}
/* Read in children */
......
......@@ -324,7 +324,7 @@ glade_widget_add_signal_handler (GladeWidget *widget, const GladeSignal *signal_
signals = glade_widget_list_signal_handlers (widget, glade_signal_get_name (signal_handler));
if (!signals)
{
signals = g_ptr_array_new ();
signals = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
g_hash_table_insert (widget->priv->signals,
g_strdup (glade_signal_get_name (signal_handler)),
signals);
......@@ -1149,14 +1149,9 @@ glade_widget_get_real_property (GObject * object,
}
static void
free_signals (gpointer value)
free_signals (GPtrArray *signals)
{
GPtrArray *signals = (GPtrArray *) value;
if (signals == NULL)
return;
g_ptr_array_foreach (signals, (GFunc) g_object_unref, NULL);
g_assert (signals);
g_ptr_array_free (signals, TRUE);
}
......
......@@ -2477,6 +2477,9 @@ glade_gtk_table_widget_exceeds_bounds (GtkTable * table, gint n_rows,
break;
}
}
g_list_free (children);
return ret;
}
......@@ -10266,10 +10269,16 @@ glade_gtk_store_read_columns (GladeWidget * widget, GladeXmlNode * node)
type =
glade_xml_get_property_string_required (prop, GLADE_TAG_TYPE, NULL);
data = glade_column_type_new (type, NULL);
data->type_name = g_strdup (type);
data->column_name =
column_name[0] ? g_strdup (column_name) : g_ascii_strdown (type, -1);
if (!column_name[0])
{
gchar *cname = g_ascii_strdown (type, -1);
data = glade_column_type_new (type, cname);
g_free (cname);
}
else
data = glade_column_type_new (type, column_name);
if (glade_name_context_has_name (context, data->column_name))
{
......@@ -10286,6 +10295,8 @@ glade_gtk_store_read_columns (GladeWidget * widget, GladeXmlNode * node)
column_name[0] = '\0';
}
glade_name_context_destroy (context);
property = glade_widget_get_property (widget, "columns");
g_value_init (&value, GLADE_TYPE_COLUMN_TYPE_LIST);
g_value_take_boxed (&value, g_list_reverse (types));
......@@ -10368,15 +10379,12 @@ glade_gtk_store_read_data (GladeWidget * widget, GladeXmlNode * node)
* should we be doing this part in "finished" ? ... todo thinkso...
*/
value_str = glade_xml_get_content (col_node);
value = glade_utils_value_from_string
(g_type_from_name (column_type->type_name), value_str,
glade_widget_get_project (widget), widget);
value = glade_utils_value_from_string (g_type_from_name (column_type->type_name), value_str,
glade_widget_get_project (widget), widget);
g_free (value_str);
data =
glade_model_data_new (g_type_from_name
(column_type->type_name),
column_type->column_name);
data = glade_model_data_new (g_type_from_name (column_type->type_name),
column_type->column_name);
g_value_copy (value, &data->value);
g_value_unset (value);
......
......@@ -33,7 +33,7 @@
GladeModelData *
glade_model_data_new (GType type, const gchar * column_name)
{
GladeModelData *data = g_new0 (GladeModelData, 1);
GladeModelData *data = g_slice_new0 (GladeModelData);
if (type != 0)
g_value_init (&data->value, type);
......@@ -49,10 +49,12 @@ glade_model_data_new (GType type, const gchar * column_name)
GladeModelData *
glade_model_data_copy (GladeModelData * data)
{
GladeModelData *dup;
if (!data)
return NULL;
GladeModelData *dup = g_new0 (GladeModelData, 1);
dup = g_slice_new0 (GladeModelData);
if (G_VALUE_TYPE (&data->value) != 0)
{
......@@ -80,7 +82,7 @@ glade_model_data_free (GladeModelData * data)
g_free (data->name);
g_free (data->i18n_context);
g_free (data->i18n_comment);
g_free (data);
g_slice_free (GladeModelData, data);
}
}
......@@ -90,10 +92,12 @@ glade_model_data_tree_copy (GNode * node)
return g_node_copy_deep (node, (GCopyFunc) glade_model_data_copy, NULL);
}
static void
static gboolean
model_data_traverse_free (GNode * node, gpointer data)
{
glade_model_data_free ((GladeModelData *) node->data);
return FALSE;
}
void
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment