Mercurial > hg > forks > geeqie
diff src/filedata.c @ 2915:8536c3a680ea
Fix #664: Recursive slideshow does not respect file sorting
https://github.com/BestImageViewer/geeqie/issues/664
author | Colin Clark <colin.clark@cclark.uk> |
---|---|
date | Mon, 08 Apr 2019 11:32:12 +0100 |
parents | e6f95baec8b5 |
children |
line wrap: on
line diff
--- a/src/filedata.c Mon Apr 01 11:56:36 2019 +0100 +++ b/src/filedata.c Mon Apr 08 11:32:12 2019 +0100 @@ -1633,6 +1633,33 @@ } } +static void filelist_recursive_append_full(GList **list, GList *dirs, SortType method, gboolean ascend) +{ + GList *work; + + work = dirs; + while (work) + { + FileData *fd = (FileData *)(work->data); + GList *f; + GList *d; + + if (filelist_read(fd, &f, &d)) + { + f = filelist_filter(f, FALSE); + f = filelist_sort_full(f, method, ascend, (GCompareFunc) filelist_sort_file_cb); + *list = g_list_concat(*list, f); + + d = filelist_filter(d, TRUE); + d = filelist_sort_path(d); + filelist_recursive_append_full(list, d, method, ascend); + filelist_free(d); + } + + work = work->next; + } +} + GList *filelist_recursive(FileData *dir_fd) { GList *list; @@ -1650,6 +1677,23 @@ return list; } +GList *filelist_recursive_full(FileData *dir_fd, SortType method, gboolean ascend) +{ + GList *list; + GList *d; + + if (!filelist_read(dir_fd, &list, &d)) return NULL; + list = filelist_filter(list, FALSE); + list = filelist_sort_full(list, method, ascend, (GCompareFunc) filelist_sort_file_cb); + + d = filelist_filter(d, TRUE); + d = filelist_sort_path(d); + filelist_recursive_append_full(&list, d, method, ascend); + filelist_free(d); + + return list; +} + /* *----------------------------------------------------------------------------- * file modification support