summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--widgets/dirlist.go21
1 files changed, 10 insertions, 11 deletions
diff --git a/widgets/dirlist.go b/widgets/dirlist.go
index 65fed9b..944b72e 100644
--- a/widgets/dirlist.go
+++ b/widgets/dirlist.go
@@ -17,6 +17,7 @@ type DirectoryList struct {
 	acctConf  *config.AccountConfig
 	uiConf    *config.UIConfig
 	store     *lib.DirStore
+	dirs      []string
 	logger    *log.Logger
 	selecting string
 	selected  string
@@ -43,7 +44,7 @@ func NewDirectoryList(acctConf *config.AccountConfig, uiConf *config.UIConfig,
 }
 
 func (dirlist *DirectoryList) List() []string {
-	return dirlist.store.List()
+	return dirlist.dirs
 }
 
 func (dirlist *DirectoryList) UpdateList(done func(dirs []string)) {
@@ -77,18 +78,16 @@ func (dirlist *DirectoryList) Select(name string) {
 				dirlist.selected = dirlist.selecting
 				dirlist.filterDirsByFoldersConfig()
 				hasSelected := false
-				dirs := dirlist.store.List()
-				for _, d := range dirs {
+				for _, d := range dirlist.dirs {
 					if d == dirlist.selected {
 						hasSelected = true
 						break
 					}
 				}
 				if !hasSelected && dirlist.selected != "" {
-					dirs = append(dirs, dirlist.selected)
+					dirlist.dirs = append(dirlist.dirs, dirlist.selected)
 				}
-				sort.Strings(dirs)
-				dirlist.store.Update(dirs)
+				sort.Strings(dirlist.dirs)
 			}
 			dirlist.Invalidate()
 		})
@@ -140,10 +139,10 @@ func (dirlist *DirectoryList) Draw(ctx *ui.Context) {
 }
 
 func (dirlist *DirectoryList) nextPrev(delta int) {
-	for i, dir := range dirlist.store.List() {
+	for i, dir := range dirlist.dirs {
 		if dir == dirlist.selected {
 			var j int
-			ndirs := len(dirlist.store.List())
+			ndirs := len(dirlist.dirs)
 			for j = i + delta; j != i; j += delta {
 				if j < 0 {
 					j = ndirs - 1
@@ -151,7 +150,7 @@ func (dirlist *DirectoryList) nextPrev(delta int) {
 				if j >= ndirs {
 					j = 0
 				}
-				name := dirlist.store.List()[j]
+				name := dirlist.dirs[j]
 				if len(dirlist.acctConf.Folders) > 1 && name != dirlist.selected {
 					idx := sort.SearchStrings(dirlist.acctConf.Folders, name)
 					if idx == len(dirlist.acctConf.Folders) ||
@@ -162,7 +161,7 @@ func (dirlist *DirectoryList) nextPrev(delta int) {
 				}
 				break
 			}
-			dirlist.Select(dirlist.store.List()[j])
+			dirlist.Select(dirlist.dirs[j])
 			break
 		}
 	}
@@ -192,5 +191,5 @@ func (dirlist *DirectoryList) filterDirsByFoldersConfig() {
 			}
 		}
 	}
-	dirlist.store.Update(filtered)
+	dirlist.dirs = filtered
 }