diff options
author | Tim Culverhouse <tim@timculverhouse.com> | 2022-10-19 12:27:03 -0500 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-10-19 21:01:55 +0200 |
commit | 847c1cd3c345a6a42cc9f7e8bef90388976e4210 (patch) | |
tree | 71b2189b2fc97b883fe8488856ab444fcc6d2edb | |
parent | c3bb3aa2a8908eaeb201a740fb12d70968cc3bac (diff) | |
download | aerc-847c1cd3c345a6a42cc9f7e8bef90388976e4210.tar.gz |
terminal: properly handle cursor display
The terminal widget reports if the cursor should be displayed. Properly
handle this output to report cursor display back to aerc.
Reported-by: staceee
Signed-off-by: Tim Culverhouse <tim@timculverhouse.com>
Acked-by: Robin Jarry <robin@jarry.cc>
-rw-r--r-- | widgets/terminal.go | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/widgets/terminal.go b/widgets/terminal.go index e0a76ca8..691b1b45 100644 --- a/widgets/terminal.go +++ b/widgets/terminal.go @@ -13,14 +13,13 @@ import ( ) type Terminal struct { - closed bool - cmd *exec.Cmd - ctx *ui.Context - cursorShown bool - destroyed bool - focus bool - vterm *tcellterm.Terminal - running bool + closed bool + cmd *exec.Cmd + ctx *ui.Context + destroyed bool + focus bool + vterm *tcellterm.Terminal + running bool OnClose func(err error) OnEvent func(event tcell.Event) bool @@ -30,10 +29,9 @@ type Terminal struct { func NewTerminal(cmd *exec.Cmd) (*Terminal, error) { term := &Terminal{ - cursorShown: true, + cmd: cmd, + vterm: tcellterm.New(), } - term.cmd = cmd - term.vterm = tcellterm.New() return term, nil } @@ -98,12 +96,12 @@ func (term *Terminal) Draw(ctx *ui.Context) { func (term *Terminal) draw() { term.vterm.Draw() if term.focus && !term.closed && term.ctx != nil { - if !term.cursorShown { - term.ctx.HideCursor() - } else { - _, x, y, style := term.vterm.GetCursor() + vis, x, y, style := term.vterm.GetCursor() + if vis { term.ctx.SetCursor(x, y) term.ctx.SetCursorStyle(style) + } else { + term.ctx.HideCursor() } } } |