Revision: 1561
http://geeqie.svn.sourceforge.net/geeqie/?rev=1561&view=rev
Author: nadvornik
Date: 2009-03-20 11:52:29 +0000 (Fri, 20 Mar 2009)
Log Message:
-----------
do not add duplicate keywords from config file
Modified Paths:
--------------
trunk/src/bar_keywords.c
trunk/src/metadata.c
trunk/src/metadata.h
Modified: trunk/src/bar_keywords.c
===================================================================
--- trunk/src/bar_keywords.c 2009-03-20 10:12:29 UTC (rev 1560)
+++ trunk/src/bar_keywords.c 2009-03-20 11:52:29 UTC (rev 1561)
@@ -535,7 +535,7 @@
}
src_name = keyword_get_name(keyword_tree, src_kw_iter);
- if (keyword_exists(keyword_tree, NULL, dest_kw_iter, src_name, FALSE))
+ if (keyword_exists(keyword_tree, NULL, dest_kw_iter, src_name, FALSE,
NULL))
{
g_free(src_name);
return FALSE;
@@ -551,7 +551,7 @@
while (work)
{
gchar *keyword = work->data;
- if (keyword_exists(keyword_tree, NULL, dest_kw_iter, keyword,
FALSE))
+ if (keyword_exists(keyword_tree, NULL, dest_kw_iter, keyword,
FALSE, NULL))
{
GList *next = work->next;
g_free(keyword);
@@ -781,7 +781,7 @@
if (cdd->edit_existing)
{
if (keywords && keywords->data && /* there should be one
keyword */
- !keyword_exists(keyword_tree, NULL, &kw_iter,
keywords->data, TRUE))
+ !keyword_exists(keyword_tree, NULL, &kw_iter,
keywords->data, TRUE, NULL))
{
keyword_set(GTK_TREE_STORE(keyword_tree), &kw_iter,
keywords->data, cdd->is_keyword);
}
@@ -793,7 +793,7 @@
while (work)
{
GtkTreeIter add;
- if (keyword_exists(keyword_tree, NULL, have_dest ?
&kw_iter : NULL, work->data, FALSE))
+ if (keyword_exists(keyword_tree, NULL, have_dest ?
&kw_iter : NULL, work->data, FALSE, NULL))
{
work = work->next;
continue;
Modified: trunk/src/metadata.c
===================================================================
--- trunk/src/metadata.c 2009-03-20 10:12:29 UTC (rev 1560)
+++ trunk/src/metadata.c 2009-03-20 11:52:29 UTC (rev 1561)
@@ -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);
Modified: trunk/src/metadata.h
===================================================================
--- trunk/src/metadata.h 2009-03-20 10:12:29 UTC (rev 1560)
+++ trunk/src/metadata.h 2009-03-20 11:52:29 UTC (rev 1561)
@@ -61,7 +61,7 @@
gboolean keyword_compare(GtkTreeModel *keyword_tree, GtkTreeIter *a,
GtkTreeIter *b);
gboolean keyword_same_parent(GtkTreeModel *keyword_tree, GtkTreeIter *a,
GtkTreeIter *b);
-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);
void keyword_copy(GtkTreeStore *keyword_tree, GtkTreeIter *to, GtkTreeIter
*from);
void keyword_copy_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *to,
GtkTreeIter *from);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn