From da752fc9a4b3cb9dd08cc80614a491f980436b46 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Wed, 24 Jan 2024 15:59:54 +0900 Subject: [PATCH] Fix Windows build Fix #3598 --- src/terminal.go | 30 ++++++++++++++++++++---------- src/tui/dummy.go | 1 + src/tui/light.go | 4 ++++ src/tui/tcell.go | 4 ++++ src/tui/tui.go | 1 + 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/terminal.go b/src/terminal.go index 730e5a5..9a4640d 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -817,7 +817,11 @@ func NewTerminal(opts *Options, eventBox *util.EventBox) *Terminal { } } - _, t.hasResizeActions = t.keymap[tui.Resize.AsEvent()] + var resizeActions []*action + resizeActions, t.hasResizeActions = t.keymap[tui.Resize.AsEvent()] + if t.tui.ShouldEmitResizeEvent() { + t.keymap[tui.Resize.AsEvent()] = append(toActions(actClearScreen), resizeActions...) + } _, t.hasResultActions = t.keymap[tui.Result.AsEvent()] _, t.hasFocusActions = t.keymap[tui.Focus.AsEvent()] _, t.hasLoadActions = t.keymap[tui.Load.AsEvent()] @@ -2852,14 +2856,16 @@ func (t *Terminal) Loop() { } }() - resizeChan := make(chan os.Signal, 1) - notifyOnResize(resizeChan) // Non-portable - go func() { - for { - <-resizeChan - t.reqBox.Set(reqResize, nil) - } - }() + if !t.tui.ShouldEmitResizeEvent() { + resizeChan := make(chan os.Signal, 1) + notifyOnResize(resizeChan) // Non-portable + go func() { + for { + <-resizeChan + t.reqBox.Set(reqResize, nil) + } + }() + } t.mutex.Lock() t.initFunc() @@ -3215,7 +3221,11 @@ func (t *Terminal) Loop() { } select { case event = <-t.eventChan: - needBarrier = !event.Is(tui.Load, tui.Result, tui.Focus, tui.One, tui.Zero, tui.Resize) + if t.tui.ShouldEmitResizeEvent() { + needBarrier = !event.Is(tui.Load, tui.Result, tui.Focus, tui.One, tui.Zero) + } else { + needBarrier = !event.Is(tui.Load, tui.Result, tui.Focus, tui.One, tui.Zero, tui.Resize) + } case serverActions := <-t.serverInputChan: event = tui.Invalid.AsEvent() if t.listenAddr == nil || t.listenAddr.IsLocal() || t.listenUnsafe { diff --git a/src/tui/dummy.go b/src/tui/dummy.go index cceb447..7760a72 100644 --- a/src/tui/dummy.go +++ b/src/tui/dummy.go @@ -36,6 +36,7 @@ func (r *FullscreenRenderer) Resume(bool, bool) {} func (r *FullscreenRenderer) PassThrough(string) {} func (r *FullscreenRenderer) Clear() {} func (r *FullscreenRenderer) NeedScrollbarRedraw() bool { return false } +func (r *FullscreenRenderer) ShouldEmitResizeEvent() bool { return false } func (r *FullscreenRenderer) Refresh() {} func (r *FullscreenRenderer) Close() {} func (r *FullscreenRenderer) Size() TermSize { return TermSize{} } diff --git a/src/tui/light.go b/src/tui/light.go index 5092371..aee2510 100644 --- a/src/tui/light.go +++ b/src/tui/light.go @@ -694,6 +694,10 @@ func (r *LightRenderer) NeedScrollbarRedraw() bool { return false } +func (r *LightRenderer) ShouldEmitResizeEvent() bool { + return false +} + func (r *LightRenderer) RefreshWindows(windows []Window) { r.flush() } diff --git a/src/tui/tcell.go b/src/tui/tcell.go index 917dc9c..bfd870d 100644 --- a/src/tui/tcell.go +++ b/src/tui/tcell.go @@ -202,6 +202,10 @@ func (r *FullscreenRenderer) NeedScrollbarRedraw() bool { return true } +func (r *FullscreenRenderer) ShouldEmitResizeEvent() bool { + return true +} + func (r *FullscreenRenderer) Refresh() { // noop } diff --git a/src/tui/tui.go b/src/tui/tui.go index a937e2b..60fbe69 100644 --- a/src/tui/tui.go +++ b/src/tui/tui.go @@ -494,6 +494,7 @@ type Renderer interface { Close() PassThrough(string) NeedScrollbarRedraw() bool + ShouldEmitResizeEvent() bool GetChar() Event