Fix cursor problem in LetterPrompt

Fixes #300
This commit is contained in:
Zachary Yedidia 2016-09-04 11:19:53 -04:00
parent def5e29b91
commit 54a34001e3
2 changed files with 8 additions and 2 deletions

View file

@ -144,11 +144,14 @@ func (m *Messenger) LetterPrompt(prompt string, responses ...rune) (rune, bool)
case tcell.KeyRune: case tcell.KeyRune:
for _, r := range responses { for _, r := range responses {
if e.Rune() == r { if e.Rune() == r {
m.Clear()
m.Reset() m.Reset()
m.hasPrompt = false
return r, false return r, false
} }
} }
case tcell.KeyCtrlC, tcell.KeyCtrlQ, tcell.KeyEscape: case tcell.KeyCtrlC, tcell.KeyCtrlQ, tcell.KeyEscape:
m.hasPrompt = false
return ' ', true return ' ', true
} }
} }
@ -242,18 +245,19 @@ func (m *Messenger) Prompt(prompt, historyType string, completionTypes ...Comple
m.HandleEvent(event, m.history[historyType]) m.HandleEvent(event, m.history[historyType])
messenger.Clear() m.Clear()
for _, v := range tabs[curTab].views { for _, v := range tabs[curTab].views {
v.Display() v.Display()
} }
DisplayTabs() DisplayTabs()
messenger.Display() m.Display()
if len(suggestions) > 1 { if len(suggestions) > 1 {
m.DisplaySuggestions(suggestions) m.DisplaySuggestions(suggestions)
} }
screen.Show() screen.Show()
} }
m.Clear()
m.Reset() m.Reset()
return response, canceled return response, canceled
} }

View file

@ -172,6 +172,8 @@ func (v *View) ScrollDown(n int) {
func (v *View) CanClose(msg string, responses ...rune) bool { func (v *View) CanClose(msg string, responses ...rune) bool {
if v.Buf.IsModified { if v.Buf.IsModified {
char, canceled := messenger.LetterPrompt("You have unsaved changes. "+msg, responses...) char, canceled := messenger.LetterPrompt("You have unsaved changes. "+msg, responses...)
messenger.Clear()
messenger.Reset()
if !canceled { if !canceled {
if char == 'y' { if char == 'y' {
return true return true