From 082ef9b545809f865e1eeeaa8e9733a20120a1ad Mon Sep 17 00:00:00 2001 From: hius07 <62179190+hius07@users.noreply.github.com> Date: Sat, 11 Nov 2023 07:42:43 +0200 Subject: [PATCH] FileChooser: fix reverse sorting of folders (#11093) Do not apply "reverse sorting" to folders in sorting modes "type", "size", "percentage". In that modes folders are sorted by name. --- frontend/apps/filemanager/filemanagermenu.lua | 11 ++--------- frontend/ui/widget/filechooser.lua | 14 ++++++++------ 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index f58fbac4f..e2bc24651 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -446,18 +446,11 @@ To: text = _("Folders and files mixed"), enabled_func = function() local collate = G_reader_settings:readSetting("collate") - return collate ~= "size" and - collate ~= "type" and - collate ~= "percent_unopened_first" and - collate ~= "percent_unopened_last" + return not FileChooser.isCollateNotForMixed(collate) end, checked_func = function() local collate = G_reader_settings:readSetting("collate") - return G_reader_settings:isTrue("collate_mixed") and - collate ~= "size" and - collate ~= "type" and - collate ~= "percent_unopened_first" and - collate ~= "percent_unopened_last" + return not FileChooser.isCollateNotForMixed(collate) and G_reader_settings:isTrue("collate_mixed") end, callback = function() G_reader_settings:flipNilOrFalse("collate_mixed") diff --git a/frontend/ui/widget/filechooser.lua b/frontend/ui/widget/filechooser.lua index 3971f2ef6..ca5d77f20 100644 --- a/frontend/ui/widget/filechooser.lua +++ b/frontend/ui/widget/filechooser.lua @@ -242,19 +242,21 @@ function FileChooser:genItemTableFromPath(path) return self:genItemTable(dirs, files, path) end +function FileChooser.isCollateNotForMixed(collate) + return collate == "size" or collate == "type" + or collate == "percent_unopened_first" or collate == "percent_unopened_last" +end + function FileChooser:genItemTable(dirs, files, path) local collate = G_reader_settings:readSetting("collate") - local collate_not_for_mixed = collate == "size" or - collate == "type" or - collate == "percent_unopened_first" or - collate == "percent_unopened_last" local collate_mixed = G_reader_settings:isTrue("collate_mixed") local reverse_collate = G_reader_settings:isTrue("reverse_collate") local sorting = self:getSortingFunction(collate, reverse_collate) + local collate_not_for_mixed = self.isCollateNotForMixed(collate) if collate_not_for_mixed or not collate_mixed then table.sort(files, sorting) - if collate_not_for_mixed then - sorting = self:getSortingFunction("strcoll", reverse_collate) + if collate_not_for_mixed then -- keep folders sorted by name not reversed + sorting = self:getSortingFunction("strcoll") end table.sort(dirs, sorting) end