diff options
Diffstat (limited to 'lib/msgstore.go')
-rw-r--r-- | lib/msgstore.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/msgstore.go b/lib/msgstore.go index 0abd26ed..5655f9e0 100644 --- a/lib/msgstore.go +++ b/lib/msgstore.go @@ -188,6 +188,7 @@ func merge(to *models.MessageInfo, from *models.MessageInfo) { func (store *MessageStore) Update(msg types.WorkerMessage) { update := false + updateThreads := false directoryChange := false switch msg := msg.(type) { case *types.DirectoryInfo: @@ -255,6 +256,7 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { store.builder.Update(msg.Info) } update = true + updateThreads = true case *types.FullMessage: if _, ok := store.pendingBodies[msg.Content.Uid]; ok { delete(store.pendingBodies, msg.Content.Uid) @@ -305,10 +307,11 @@ func (store *MessageStore) Update(msg types.WorkerMessage) { } update = true + updateThreads = true } if update { - store.update() + store.update(updateThreads) } if directoryChange && store.triggerDirectoryChange != nil { @@ -328,14 +331,14 @@ func (store *MessageStore) OnUpdateDirs(fn func()) { store.onUpdateDirs = fn } -func (store *MessageStore) update() { +func (store *MessageStore) update(threads bool) { if store.onUpdate != nil { store.onUpdate(store) } if store.onUpdateDirs != nil { store.onUpdateDirs() } - if store.BuildThreads() && store.ThreadedView() { + if store.BuildThreads() && store.ThreadedView() && threads { store.runThreadBuilder() } } @@ -654,7 +657,7 @@ func (store *MessageStore) nextPrevResult(delta int) { store.resultIndex = len(store.results) - 1 } store.Select(store.results[len(store.results)-store.resultIndex-1]) - store.update() + store.update(false) } func (store *MessageStore) NextResult() { |