diff options
Diffstat (limited to 'gtk/gtkliststore.c')
-rw-r--r-- | gtk/gtkliststore.c | 31 |
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) |