From 31bb4b3f7b78a5de511b4339cce3838bf155f554 Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Fri, 17 Aug 2001 07:23:43 +0000 Subject: Destroy the hash table and all objects in it, as well as the priv 2001-08-17 Christopher James Lahey * e-table-without.c (etw_destroy): Destroy the hash table and all objects in it, as well as the priv structure. svn path=/trunk/; revision=12147 --- widgets/table/e-table-without.c | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/widgets/table/e-table-without.c b/widgets/table/e-table-without.c index 4769d53647..148ee5506b 100644 --- a/widgets/table/e-table-without.c +++ b/widgets/table/e-table-without.c @@ -91,6 +91,32 @@ remove_row (ETableWithout *etw, int view_row) e_table_model_row_deleted (E_TABLE_MODEL (etw), view_row); } +static void +delete_hash_element (gpointer key, + gpointer value, + gpointer closure) +{ + ETableWithout *etw = closure; + etw->priv->free_duplicated_key_func (key, etw->priv->closure); +} + +static void +etw_destroy (GtkObject *object) +{ + ETableWithout *etw = E_TABLE_WITHOUT (object); + + if (etw->priv) { + if (etw->priv->hash) { + g_hash_table_foreach (etw->priv->hash, delete_hash_element, etw); + g_hash_table_destroy (etw->priv->hash); + etw->priv->hash = NULL; + } + g_free (etw->priv); + etw->priv = NULL; + } + +} + static void etw_proxy_model_rows_inserted (ETableSubset *etss, ETableModel *etm, int model_row, int count) { @@ -152,8 +178,12 @@ etw_proxy_model_changed (ETableSubset *etss, ETableModel *etm) static void etw_class_init (ETableWithoutClass *klass) { - ETableSubsetClass *etss_class = E_TABLE_SUBSET_CLASS (klass); - parent_class = gtk_type_class (PARENT_TYPE); + ETableSubsetClass *etss_class = E_TABLE_SUBSET_CLASS (klass); + GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass); + + parent_class = gtk_type_class (PARENT_TYPE); + + object_class->destroy = etw_destroy; etss_class->proxy_model_rows_inserted = etw_proxy_model_rows_inserted; etss_class->proxy_model_rows_deleted = etw_proxy_model_rows_deleted; -- cgit v1.2.3