]> uap-core.de Git - mizunara.git/commitdiff
sort files
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 1 Feb 2025 20:43:23 +0000 (21:43 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 1 Feb 2025 20:43:23 +0000 (21:43 +0100)
mizunara/filebrowser.c
mizunara/filebrowser.h

index 3cf3bd3cd3cf1e10631b32fceca3acf8cb270ae4..857fb023aafd0c36bfe398cb95dd7419d0cc748d 100644 (file)
@@ -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);
+}
index c5a76afa54904e6f115c7a5f1be4e8b5dc62f865..f21f2de28bb038328b1fc1f492db2e5000e987f5 100644 (file)
@@ -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