diff options
Diffstat (limited to 'widgets')
-rw-r--r-- | widgets/aerc.go | 9 | ||||
-rw-r--r-- | widgets/status.go | 4 | ||||
-rw-r--r-- | widgets/terminal.go | 14 |
3 files changed, 21 insertions, 6 deletions
diff --git a/widgets/aerc.go b/widgets/aerc.go index bdf94bd..92fc06e 100644 --- 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 index b7d9490..7a746fa 100644 --- 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 index 4a339cc..e7286f9 100644 --- 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) + } } } |