aerc

Working clone of aerc-mail.org
git clone git://git.danielmoch.com/aerc.git
Log | Files | Refs | README | LICENSE

commit 13032734cd90a172eb20a3208b084795784c390b
parent 588a6c785b29e6f2f97b7655101789be90bafafb
Author: Drew DeVault <sir@cmpwn.com>
Date:   Sun, 19 May 2019 18:08:41 -0400

Advance message list cursor when messages arrive

Diffstat:
Mwidgets/msglist.go | 13+++++++++++++
1 file changed, 13 insertions(+), 0 deletions(-)

diff --git a/widgets/msglist.go b/widgets/msglist.go @@ -18,6 +18,7 @@ type MessageList struct { height int scroll int selected int + nmsgs int spinner *Spinner store *lib.MessageStore } @@ -108,9 +109,20 @@ func (ml *MessageList) storeUpdate(store *lib.MessageStore) { } if len(store.Uids) > 0 { + // Prevent selecting beyond the last message for ml.selected >= len(store.Uids) { ml.Prev() } + // When new messages come in, advance the cursor accordingly + // Note that this assumes new messages are appended to the top, which + // isn't necessarily true once we implement SORT... ideally we'd look + // for the previously selected UID. + if len(store.Uids) > ml.nmsgs && ml.nmsgs != 0 { + for i := 0; i < len(store.Uids)-ml.nmsgs; i++ { + ml.Next() + } + } + ml.nmsgs = len(store.Uids) } ml.Invalidate() @@ -124,6 +136,7 @@ func (ml *MessageList) SetStore(store *lib.MessageStore) { ml.store = store if store != nil { ml.spinner.Stop() + ml.nmsgs = len(store.Uids) store.OnUpdate(ml.storeUpdate) } else { ml.spinner.Start()