diff --git a/applications/main/archive/helpers/archive_files.h b/applications/main/archive/helpers/archive_files.h index 881d1f134..27f6353a7 100644 --- a/applications/main/archive/helpers/archive_files.h +++ b/applications/main/archive/helpers/archive_files.h @@ -87,6 +87,9 @@ static int ArchiveFile_t_cmp(const ArchiveFile_t* a, const ArchiveFile_t* b) { if(a->type == ArchiveFileTypeFolder && b->type != ArchiveFileTypeFolder) { return -1; } + if(a->type != ArchiveFileTypeFolder && b->type == ArchiveFileTypeFolder) { + return 1; + } return furi_string_cmpi(a->path, b->path); } diff --git a/applications/services/gui/modules/file_browser.c b/applications/services/gui/modules/file_browser.c index 5d87fcb45..eecea0dbd 100644 --- a/applications/services/gui/modules/file_browser.c +++ b/applications/services/gui/modules/file_browser.c @@ -78,11 +78,18 @@ static void BrowserItem_t_clear(BrowserItem_t* obj) { static int BrowserItem_t_cmp(const BrowserItem_t* a, const BrowserItem_t* b) { // Back indicator comes before everything, then folders, then all other files. - if((a->type == BrowserItemTypeBack) || - (a->type == BrowserItemTypeFolder && b->type != BrowserItemTypeFolder && - b->type != BrowserItemTypeBack)) { + if(a->type == BrowserItemTypeBack) { return -1; } + if(b->type == BrowserItemTypeBack) { + return 1; + } + if(a->type == BrowserItemTypeFolder && b->type != BrowserItemTypeFolder) { + return -1; + } + if(a->type != BrowserItemTypeFolder && b->type == BrowserItemTypeFolder) { + return 1; + } return furi_string_cmpi(a->path, b->path); }