From: Klaus Ethgen Date: Mon, 6 Apr 2009 23:59:54 +0000 (+0000) Subject: Nest new keywords inside existing X-Git-Tag: v1.0.0~276 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=fc1b420298aad46578404e56b0396182c1f4c393 Nest new keywords inside existing It is boring to first add a bunch of keywords and then move them to the new location. It is more natural to add them as child to existing ons. --- diff --git a/src/bar_keywords.c b/src/bar_keywords.c index 94dd1166..f3636032 100644 --- a/src/bar_keywords.c +++ b/src/bar_keywords.c @@ -794,26 +794,31 @@ static void bar_pane_keywords_edit_ok_cb(GenericDialog *gd, gpointer data) else { GList *work = keywords; + gboolean append_to = FALSE; while (work) { GtkTreeIter add; - if (keyword_exists(keyword_tree, NULL, have_dest ? &kw_iter : NULL, work->data, FALSE, NULL)) + if (keyword_exists(keyword_tree, NULL, (have_dest || append_to) ? &kw_iter : NULL, work->data, FALSE, NULL)) { work = work->next; continue; } if (have_dest) + { + gtk_tree_store_append(GTK_TREE_STORE(keyword_tree), &add, &kw_iter); + } + else if (append_to) { gtk_tree_store_insert_after(GTK_TREE_STORE(keyword_tree), &add, NULL, &kw_iter); } else { gtk_tree_store_append(GTK_TREE_STORE(keyword_tree), &add, NULL); - have_dest = TRUE; + append_to = TRUE; + kw_iter = add; } - kw_iter = add; - keyword_set(GTK_TREE_STORE(keyword_tree), &kw_iter, work->data, cdd->is_keyword); + keyword_set(GTK_TREE_STORE(keyword_tree), &add, work->data, cdd->is_keyword); work = work->next; } }