From 66167cca134395d682896ed4af2bc42d8ca1a7c1 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Sat, 1 Feb 2025 21:43:23 +0100 Subject: [PATCH] sort files --- mizunara/filebrowser.c | 14 ++++++++++++++ mizunara/filebrowser.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/mizunara/filebrowser.c b/mizunara/filebrowser.c index 3cf3bd3..857fb02 100644 --- a/mizunara/filebrowser.c +++ b/mizunara/filebrowser.c @@ -129,6 +129,10 @@ int jobthr_filebrowser_op_load(void *data) { } closedir(dir); + + op->result->collection.cmpfunc = (cx_compare_func)fileinfo_type_name_cmp; + cxListSort(op->result); + return 0; } @@ -161,3 +165,13 @@ void filebrowser_op_finished(UiEvent *event, void *data) { free(op->url); free(op); } + +int fileinfo_type_name_cmp(FileInfo *f1, FileInfo *f2) { + int f1_isdir = S_ISDIR(f1->mode); + int f2_isdir = S_ISDIR(f2->mode); + if(f1_isdir != f2_isdir) { + return f1_isdir ? -1 : 1; + } + + return strcmp(f1->name, f2->name); +} diff --git a/mizunara/filebrowser.h b/mizunara/filebrowser.h index c5a76af..f21f2de 100644 --- a/mizunara/filebrowser.h +++ b/mizunara/filebrowser.h @@ -79,6 +79,9 @@ int jobthr_filebrowser_op_load(void *data); void filebrowser_op_finished(UiEvent *event, void *data); +int fileinfo_type_name_cmp(FileInfo *f1, FileInfo *f2); + + #ifdef __cplusplus } #endif -- 2.43.5