diff options
author | Christopher James Lahey <clahey@ximian.com> | 2001-08-21 01:13:36 +0800 |
---|---|---|
committer | Chris Lahey <clahey@src.gnome.org> | 2001-08-21 01:13:36 +0800 |
commit | 4dd3f5e734c4582596bfdabc29ffcac8261fb74d (patch) | |
tree | 2f5e5b158d2e9508824fa1b6143ecbbc9cc11d90 /widgets/table/e-table-without.c | |
parent | 4a1da6f28901dba5c6a3dd3c3a8bc3b16f931e31 (diff) | |
download | gsoc2013-evolution-4dd3f5e734c4582596bfdabc29ffcac8261fb74d.tar.gz gsoc2013-evolution-4dd3f5e734c4582596bfdabc29ffcac8261fb74d.tar.zst gsoc2013-evolution-4dd3f5e734c4582596bfdabc29ffcac8261fb74d.zip |
Made this object handle NULLs for all the handler functions.
2001-08-20 Christopher James Lahey <clahey@ximian.com>
* e-table-without.c: Made this object handle NULLs for all the
handler functions.
svn path=/trunk/; revision=12316
Diffstat (limited to 'widgets/table/e-table-without.c')
-rw-r--r-- | widgets/table/e-table-without.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/widgets/table/e-table-without.c b/widgets/table/e-table-without.c index 366b6c9f35..a597ac7381 100644 --- a/widgets/table/e-table-without.c +++ b/widgets/table/e-table-without.c @@ -43,9 +43,13 @@ check (ETableWithout *etw, int model_row) void *key; ETableSubset *etss = E_TABLE_SUBSET (etw); - key = etw->priv->get_key_func (etss->source, model_row, etw->priv->closure); + if (etw->priv->get_key_func) + key = etw->priv->get_key_func (etss->source, model_row, etw->priv->closure); + else + key = GINT_TO_POINTER (model_row); ret_val = (g_hash_table_lookup (etw->priv->hash, key) != NULL); - etw->priv->free_gotten_key_func (key, etw->priv->closure); + if (etw->priv->free_gotten_key_func) + etw->priv->free_gotten_key_func (key, etw->priv->closure); return ret_val; } @@ -56,9 +60,16 @@ check_with_key (ETableWithout *etw, void *key, int model_row) void *key2; ETableSubset *etss = E_TABLE_SUBSET (etw); - key2 = etw->priv->get_key_func (etss->source, model_row, etw->priv->closure); - ret_val = (etw->priv->compare_func (key, key2)); - etw->priv->free_gotten_key_func (key, etw->priv->closure); + if (etw->priv->get_key_func) + key2 = etw->priv->get_key_func (etss->source, model_row, etw->priv->closure); + else + key2 = GINT_TO_POINTER (model_row); + if (etw->priv->compare_func) + ret_val = (etw->priv->compare_func (key, key2)); + else + ret_val = (key == key2); + if (etw->priv->free_gotten_key_func) + etw->priv->free_gotten_key_func (key, etw->priv->closure); return ret_val; } @@ -97,7 +108,8 @@ delete_hash_element (gpointer key, gpointer closure) { ETableWithout *etw = closure; - etw->priv->free_duplicated_key_func (key, etw->priv->closure); + if (etw->priv->free_duplicated_key_func) + etw->priv->free_duplicated_key_func (key, etw->priv->closure); } static void @@ -269,7 +281,8 @@ void e_table_without_add (ETableWithout *etw, int i; /* View row */ ETableSubset *etss = E_TABLE_SUBSET (etw); - key = etw->priv->duplicate_key_func (key, etw->priv->closure); + if (etw->priv->duplicate_key_func) + key = etw->priv->duplicate_key_func (key, etw->priv->closure); g_hash_table_insert (etw->priv->hash, key, key); for (i = 0; i < etss->n_map; i++) { @@ -312,7 +325,8 @@ void e_table_without_remove (ETableWithout *etw, } } if (g_hash_table_lookup_extended (etw->priv->hash, key, &old_key, NULL)) { - etw->priv->free_duplicated_key_func (key, etw->priv->closure); + if (etw->priv->free_duplicated_key_func) + etw->priv->free_duplicated_key_func (key, etw->priv->closure); g_hash_table_remove (etw->priv->hash, key); } } |