From d35213eaabeda8749cd0aab103e5895cfcd96e94 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Mon, 14 Jan 2019 08:07:24 -0500 Subject: Add cursor handling in ex line --- widgets/exline.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'widgets/exline.go') diff --git a/widgets/exline.go b/widgets/exline.go index ae83933..e0954d7 100644 --- a/widgets/exline.go +++ b/widgets/exline.go @@ -14,7 +14,9 @@ import ( type ExLine struct { command []rune commit func(cmd string) + ctx *ui.Context cancel func() + cells int index int scroll int @@ -24,6 +26,7 @@ type ExLine struct { func NewExLine(commit func(cmd string), cancel func()) *ExLine { return &ExLine{ cancel: cancel, + cells: -1, commit: commit, command: []rune{}, } @@ -40,10 +43,13 @@ func (ex *ExLine) Invalidate() { } func (ex *ExLine) Draw(ctx *ui.Context) { + ex.ctx = ctx // gross ctx.Fill(0, 0, ctx.Width(), ctx.Height(), ' ', tcell.StyleDefault) ctx.Printf(0, 0, tcell.StyleDefault, ":%s", string(ex.command)) cells := runewidth.StringWidth(string(ex.command[:ex.index])) - ctx.SetCursor(cells+1, 0) + if cells != ex.cells { + ctx.SetCursor(cells+1, 0) + } } func (ex *ExLine) insert(ch rune) { @@ -115,10 +121,10 @@ func (ex *ExLine) Event(event tcell.Event) bool { case tcell.KeyCtrlW: ex.deleteWord() case tcell.KeyEnter: - //ex.ctx.Screen().HideCursor() + ex.ctx.HideCursor() ex.commit(string(ex.command)) case tcell.KeyEsc, tcell.KeyCtrlC: - //ex.ctx.Screen().HideCursor() + ex.ctx.HideCursor() ex.cancel() default: if event.Rune() != 0 { -- cgit v1.2.3