From e878ebcbcd238bc2d0adb46289f592568c450528 Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sat, 1 Feb 2020 11:35:55 -0800 Subject: [PATCH] Prevent input fighting between terminal and other input listeners. (#278) --- d2core/d2term/terminal.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/d2core/d2term/terminal.go b/d2core/d2term/terminal.go index 9538f3b6..ebb0a211 100644 --- a/d2core/d2term/terminal.go +++ b/d2core/d2term/terminal.go @@ -133,14 +133,18 @@ func (t *terminal) advance(elapsed float64) error { func (t *terminal) OnKeyDown(event d2input.KeyEvent) bool { maxOutputIndex := d2helper.MaxInt(0, len(t.outputHistory)-t.lineCount) - if event.Key == d2input.KeyGraveAccent { - switch t.visState { - case termVisShowing, termVisShown: - t.hide() - case termVisHiding, termVisHidden: + if t.visState == termVisHiding || t.visState == termVisHidden { + if event.Key == d2input.KeyGraveAccent { t.show() + return true } + // When terminal is not visible, only d2input.KeyGraveAccent is consumed. + return false + } + + if event.Key == d2input.KeyGraveAccent { + t.hide() return true } @@ -221,7 +225,8 @@ func (t *terminal) OnKeyDown(event d2input.KeyEvent) bool { return true } - return false + // When terminal is visible, all keys are consumed. + return true } func (t *terminal) OnKeyChars(event d2input.KeyCharsEvent) bool {