diff options
Diffstat (limited to 'lib/ui')
-rw-r--r-- | lib/ui/textinput.go | 1 | ||||
-rw-r--r-- | lib/ui/ui.go | 34 |
2 files changed, 19 insertions, 16 deletions
diff --git a/lib/ui/textinput.go b/lib/ui/textinput.go index ce8ccc55..d99871ce 100644 --- a/lib/ui/textinput.go +++ b/lib/ui/textinput.go @@ -314,6 +314,7 @@ func (ti *TextInput) showCompletions() { ti.completions, ti.prefix = ti.tabcomplete(ti.StringLeft()) ti.completeIndex = -1 ti.Invalidate() + QueueRedraw() } func (ti *TextInput) OnChange(onChange func(ti *TextInput)) { diff --git a/lib/ui/ui.go b/lib/ui/ui.go index d477242e..e29ab13c 100644 --- a/lib/ui/ui.go +++ b/lib/ui/ui.go @@ -3,7 +3,6 @@ package ui import ( "sync/atomic" - "git.sr.ht/~rjarry/aerc/logging" "github.com/gdamore/tcell/v2" ) @@ -108,21 +107,24 @@ func (state *UI) EnableMouse() { state.screen.EnableMouse() } -func (state *UI) ProcessEvents() { - defer logging.PanicHandler() - - for !state.ShouldExit() { - event := state.screen.PollEvent() - if event, ok := event.(*tcell.EventResize); ok { - state.screen.Clear() - width, height := event.Size() - state.ctx = NewContext(width, height, state.screen, state.onPopover) - state.Content.Invalidate() - } - // if we have a popover, and it can handle the event, it does so - if state.popover == nil || !state.popover.Event(event) { - // otherwise, we send the event to the main content - state.Content.Event(event) +func (state *UI) ChannelEvents() { + go func() { + for { + MsgChannel <- state.screen.PollEvent() } + }() +} + +func (state *UI) HandleEvent(event tcell.Event) { + if event, ok := event.(*tcell.EventResize); ok { + state.screen.Clear() + width, height := event.Size() + state.ctx = NewContext(width, height, state.screen, state.onPopover) + state.Content.Invalidate() + } + // if we have a popover, and it can handle the event, it does so + if state.popover == nil || !state.popover.Event(event) { + // otherwise, we send the event to the main content + state.Content.Event(event) } } |