summaryrefslogtreecommitdiff
path: root/gtk/gtkliststore.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkliststore.c')
-rw-r--r--gtk/gtkliststore.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c
index e2aec14448..c7d79c5b89 100644
--- a/gtk/gtkliststore.c
+++ b/gtk/gtkliststore.c
@@ -35,6 +35,8 @@ static void gtk_list_store_tree_model_init (GtkTreeModelIface *iface);
static void gtk_list_store_drag_source_init(GtkTreeDragSourceIface *iface);
static void gtk_list_store_drag_dest_init (GtkTreeDragDestIface *iface);
static void gtk_list_store_sortable_init (GtkTreeSortableIface *iface);
+static void gtk_list_store_destroy (GtkObject *gobject);
+static void gtk_list_store_finalize (GObject *object);
static guint gtk_list_store_get_flags (GtkTreeModel *tree_model);
static gint gtk_list_store_get_n_columns (GtkTreeModel *tree_model);
static GType gtk_list_store_get_column_type (GtkTreeModel *tree_model,
@@ -193,8 +195,13 @@ static void
gtk_list_store_class_init (GtkListStoreClass *class)
{
GObjectClass *object_class;
+ GtkObjectClass *gobject_class;
object_class = (GObjectClass*) class;
+ gobject_class = (GtkObjectClass*) class;
+
+ object_class->finalize = gtk_list_store_finalize;
+ gobject_class->destroy = gtk_list_store_destroy;
}
static void
@@ -380,6 +387,30 @@ gtk_list_store_set_column_type (GtkListStore *list_store,
list_store->column_headers[column] = type;
}
+static void
+gtk_list_store_finalize (GObject *object)
+{
+ GtkListStore *list_store = GTK_LIST_STORE (object);
+
+ g_list_foreach (list_store->root, (GFunc) _gtk_tree_data_list_free, list_store->column_headers);
+ _gtk_tree_data_list_header_free (list_store->sort_list);
+ g_free (list_store->column_headers);
+
+}
+
+static void
+gtk_list_store_destroy (GtkObject *gobject)
+{
+ GtkListStore *list_store = GTK_LIST_STORE (gobject);
+
+ if (list_store->default_sort_destroy)
+ {
+ (* list_store->default_sort_destroy) (list_store->default_sort_data);
+ list_store->default_sort_destroy = NULL;
+ list_store->default_sort_data = NULL;
+ }
+}
+
/* Fulfill the GtkTreeModel requirements */
static guint
gtk_list_store_get_flags (GtkTreeModel *tree_model)