Mercurial > geeqie.yaz
diff src/metadata.c @ 1465:400ecfc3d8b1
do not add duplicate keywords from config file
author | nadvornik |
---|---|
date | Fri, 20 Mar 2009 11:52:29 +0000 |
parents | 1b3751ac4743 |
children | 7cb24fdf07c0 |
line wrap: on
line diff
--- a/src/metadata.c Fri Mar 20 10:12:29 2009 +0000 +++ b/src/metadata.c Fri Mar 20 11:52:29 2009 +0000 @@ -784,7 +784,7 @@ } } -gboolean keyword_exists(GtkTreeModel *keyword_tree, GtkTreeIter *parent_ptr, GtkTreeIter *sibling, const gchar *name, gboolean exclude_sibling) +gboolean keyword_exists(GtkTreeModel *keyword_tree, GtkTreeIter *parent_ptr, GtkTreeIter *sibling, const gchar *name, gboolean exclude_sibling, GtkTreeIter *result) { GtkTreeIter parent; GtkTreeIter iter; @@ -818,7 +818,11 @@ ret = strcmp(casefold, iter_casefold) == 0; g_free(iter_casefold); } - if (ret) break; + if (ret) + { + if (result) *result = iter; + break; + } if (!gtk_tree_model_iter_next(keyword_tree, &iter)) break; } g_free(casefold); @@ -1292,7 +1296,11 @@ if (name && name[0]) { GtkTreeIter iter; - gtk_tree_store_append(keyword_tree, &iter, parent); + /* re-use existing keyword if any */ + if (!keyword_exists(GTK_TREE_MODEL(keyword_tree), parent, NULL, name, FALSE, &iter)) + { + gtk_tree_store_append(keyword_tree, &iter, parent); + } keyword_set(keyword_tree, &iter, name, is_kw); g_free(name); return gtk_tree_iter_copy(&iter);