summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2024-01-24 15:59:54 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2024-01-24 15:59:54 +0900
commitda752fc9a4b3cb9dd08cc80614a491f980436b46 (patch)
tree8408c92d497491efbe41e2ac7280bbf637e77c1e
parentbeb2de2dd995ae261084ead9903d7fa7c08da7af (diff)
Fix Windows build
Fix #3598
-rw-r--r--src/terminal.go30
-rw-r--r--src/tui/dummy.go1
-rw-r--r--src/tui/light.go4
-rw-r--r--src/tui/tcell.go4
-rw-r--r--src/tui/tui.go1
5 files changed, 30 insertions, 10 deletions
diff --git a/src/terminal.go b/src/terminal.go
index 730e5a51..9a4640d2 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 cceb4478..7760a724 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 5092371d..aee2510e 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 917dc9cb..bfd870dc 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 a937e2b4..60fbe692 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