aerc

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

commit e59122150932ae2cad32ab5881ed40ef0d722812
parent a602891768d0272c8688731752f491eb92668d7d
Author: Drew DeVault <sir@cmpwn.com>
Date:   Thu, 21 Mar 2019 21:34:12 -0400

Expire status errors on input

Diffstat:
Mwidgets/aerc.go | 9+++++++++
Mwidgets/status.go | 4++++
Mwidgets/terminal.go | 14++++++++------
3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/widgets/aerc.go b/widgets/aerc.go @@ -124,6 +124,7 @@ func (aerc *Aerc) Event(event tcell.Event) bool { switch event := event.(type) { case *tcell.EventKey: + aerc.statusline.Expire() aerc.pendingKeys = append(aerc.pendingKeys, config.KeyStroke{ Key: event.Key(), Rune: event.Rune(), @@ -231,8 +232,16 @@ func (aerc *Aerc) focus(item libui.Interactive) { aerc.focused.Focus(false) } aerc.focused = item + interactive, ok := aerc.tabs.Tabs[aerc.tabs.Selected].Content.(ui.Interactive) if item != nil { item.Focus(true) + if ok { + interactive.Focus(false) + } + } else { + if ok { + interactive.Focus(true) + } } } diff --git a/widgets/status.go b/widgets/status.go @@ -81,6 +81,10 @@ func (status *StatusLine) Push(text string, expiry time.Duration) *StatusMessage return msg } +func (status *StatusLine) Expire() { + status.stack = nil +} + func (msg *StatusMessage) Color(bg tcell.Color, fg tcell.Color) { msg.bg = bg msg.fg = fg diff --git a/widgets/terminal.go b/widgets/terminal.go @@ -310,12 +310,14 @@ func (term *Terminal) Draw(ctx *ui.Context) { func (term *Terminal) Focus(focus bool) { term.focus = focus - if !term.focus { - term.ctx.HideCursor() - } else { - state := term.vterm.ObtainState() - row, col := state.GetCursorPos() - term.ctx.SetCursor(col, row) + if term.ctx != nil { + if !term.focus { + term.ctx.HideCursor() + } else { + state := term.vterm.ObtainState() + row, col := state.GetCursorPos() + term.ctx.SetCursor(col, row) + } } }