Mercurial > geeqie
comparison src/metadata.c @ 1456:b24391991f7f
improved expanding and hiding of helper keywords
author | nadvornik |
---|---|
date | Tue, 17 Mar 2009 18:58:15 +0000 |
parents | b106af9689db |
children | 5c0ecb2ebbc5 |
comparison
equal
deleted
inserted
replaced
1455:2545780d4779 | 1456:b24391991f7f |
---|---|
915 | 915 |
916 | 916 |
917 static gboolean keyword_tree_is_set_casefold(GtkTreeModel *keyword_tree, GtkTreeIter iter, GList *casefold_list) | 917 static gboolean keyword_tree_is_set_casefold(GtkTreeModel *keyword_tree, GtkTreeIter iter, GList *casefold_list) |
918 { | 918 { |
919 if (!casefold_list) return FALSE; | 919 if (!casefold_list) return FALSE; |
920 | |
921 if (!keyword_get_is_keyword(keyword_tree, &iter)) | |
922 { | |
923 /* for the purpose of expanding and hiding, a helper is set if it has any children set */ | |
924 GtkTreeIter child; | |
925 if (!gtk_tree_model_iter_children(keyword_tree, &child, &iter)) | |
926 return FALSE; /* this should happen only on empty helpers */ | |
927 | |
928 while (TRUE) | |
929 { | |
930 if (keyword_tree_is_set_casefold(keyword_tree, child, casefold_list)) return TRUE; | |
931 if (!gtk_tree_model_iter_next(keyword_tree, &child)) return FALSE; | |
932 } | |
933 } | |
920 | 934 |
921 while (TRUE) | 935 while (TRUE) |
922 { | 936 { |
923 GtkTreeIter parent; | 937 GtkTreeIter parent; |
924 | 938 |
951 { | 965 { |
952 gboolean ret; | 966 gboolean ret; |
953 GList *casefold_list = NULL; | 967 GList *casefold_list = NULL; |
954 GList *work; | 968 GList *work; |
955 | 969 |
956 if (!keyword_get_is_keyword(keyword_tree, iter)) return FALSE; | |
957 | |
958 work = kw_list; | 970 work = kw_list; |
959 while (work) | 971 while (work) |
960 { | 972 { |
961 const gchar *kw = work->data; | 973 const gchar *kw = work->data; |
962 work = work->next; | 974 work = work->next; |
1128 static void keyword_hide_unset_in_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *iter_ptr, gpointer id, GList *keywords) | 1140 static void keyword_hide_unset_in_recursive(GtkTreeStore *keyword_tree, GtkTreeIter *iter_ptr, gpointer id, GList *keywords) |
1129 { | 1141 { |
1130 GtkTreeIter iter = *iter_ptr; | 1142 GtkTreeIter iter = *iter_ptr; |
1131 while (TRUE) | 1143 while (TRUE) |
1132 { | 1144 { |
1133 if (keyword_get_is_keyword(GTK_TREE_MODEL(keyword_tree), &iter) && | 1145 if (!keyword_tree_is_set(GTK_TREE_MODEL(keyword_tree), &iter, keywords)) |
1134 !keyword_tree_is_set(GTK_TREE_MODEL(keyword_tree), &iter, keywords)) | |
1135 { | 1146 { |
1136 keyword_hide_in(keyword_tree, &iter, id); | 1147 keyword_hide_in(keyword_tree, &iter, id); |
1137 /* no need to check children of hidden node */ | 1148 /* no need to check children of hidden node */ |
1138 } | 1149 } |
1139 else | 1150 else |