summary refs log tree commit diff stats
path: root/widgets/dirlist.go
diff options
context:
space:
mode:
Diffstat (limited to 'widgets/dirlist.go')
-rw-r--r--widgets/dirlist.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/widgets/dirlist.go b/widgets/dirlist.go
index 9267a3c..e8a9309 100644
--- a/widgets/dirlist.go
+++ b/widgets/dirlist.go
@@ -11,6 +11,7 @@ import (
 
 	"git.sr.ht/~sircmpwn/aerc/config"
 	"git.sr.ht/~sircmpwn/aerc/lib"
+	libsort "git.sr.ht/~sircmpwn/aerc/lib/sort"
 	"git.sr.ht/~sircmpwn/aerc/lib/ui"
 	"git.sr.ht/~sircmpwn/aerc/models"
 	"git.sr.ht/~sircmpwn/aerc/worker/types"
@@ -104,6 +105,10 @@ func (dirlist *DirectoryList) Select(name string) {
 				}
 				sort.Strings(dirlist.dirs)
 				dirlist.sortDirsByFoldersSortConfig()
+				// once opened, we need to enumerate the contents
+				dirlist.worker.PostAction(&types.FetchDirectoryContents{
+					SortCriteria: dirlist.getSortCriteria(),
+				}, nil)
 			}
 			dirlist.Invalidate()
 		})
@@ -378,3 +383,15 @@ func findString(slice []string, str string) int {
 	}
 	return -1
 }
+
+func (dirlist *DirectoryList) getSortCriteria() []*types.SortCriterion {
+	if len(dirlist.UiConfig().Sort) == 0 {
+		return nil
+	}
+	criteria, err := libsort.GetSortCriteria(dirlist.UiConfig().Sort)
+	if err != nil {
+		dirlist.logger.Printf("getSortCriteria failed: %v", err)
+		return nil
+	}
+	return criteria
+}