diff options
Diffstat (limited to 'widgets/dirlist.go')
-rw-r--r-- | widgets/dirlist.go | 21 |
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 } |