diff --git a/src/terminal.go b/src/terminal.go index cb8f13c96ca7b70ebed70aedefe7b2a244310829..7bc79398821b3ea4625119ca04eb07b91a1fc10c 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -1422,13 +1422,13 @@ func (t *Terminal) executeCommand(template string, forcePlus bool, background bo cmd.Stderr = os.Stderr t.tui.Pause(true) cmd.Run() - t.tui.Resume(true) + t.tui.Resume(true, false) t.redraw() t.refresh() } else { t.tui.Pause(false) cmd.Run() - t.tui.Resume(false) + t.tui.Resume(false, false) } cleanTemporaryFiles() } @@ -1701,7 +1701,7 @@ func (t *Terminal) Loop() { case reqRefresh: t.suppress = false case reqReinit: - t.tui.Resume(t.fullscreen) + t.tui.Resume(t.fullscreen, true) t.redraw() case reqRedraw: t.redraw() diff --git a/src/tui/dummy.go b/src/tui/dummy.go index 76a16e5594b9f8c63a8dd15b164e7761a4a58415..8fce77e5ba1350aa1d690aac6af7357c25b5b941 100644 --- a/src/tui/dummy.go +++ b/src/tui/dummy.go @@ -25,12 +25,12 @@ const ( Reverse = Attr(1 << 6) ) -func (r *FullscreenRenderer) Init() {} -func (r *FullscreenRenderer) Pause(bool) {} -func (r *FullscreenRenderer) Resume(bool) {} -func (r *FullscreenRenderer) Clear() {} -func (r *FullscreenRenderer) Refresh() {} -func (r *FullscreenRenderer) Close() {} +func (r *FullscreenRenderer) Init() {} +func (r *FullscreenRenderer) Pause(bool) {} +func (r *FullscreenRenderer) Resume(bool, bool) {} +func (r *FullscreenRenderer) Clear() {} +func (r *FullscreenRenderer) Refresh() {} +func (r *FullscreenRenderer) Close() {} func (r *FullscreenRenderer) DoesAutoWrap() bool { return false } func (r *FullscreenRenderer) GetChar() Event { return Event{} } diff --git a/src/tui/light.go b/src/tui/light.go index 3ff84870a4bb3166535f6f3de39b26ca920e4571..cccf3a9b53ee9b07f8eb44c64eb6e2f2071549a9 100644 --- a/src/tui/light.go +++ b/src/tui/light.go @@ -561,7 +561,7 @@ func (r *LightRenderer) Pause(clear bool) { } } -func (r *LightRenderer) Resume(clear bool) { +func (r *LightRenderer) Resume(clear bool, sigcont bool) { r.setupTerminal() if clear { if r.fullscreen { @@ -570,10 +570,10 @@ func (r *LightRenderer) Resume(clear bool) { r.rmcup() } r.flush() - } else if !r.fullscreen && r.mouse { - // NOTE: Resume(false) is only called on SIGCONT after SIGSTOP. - // And It's highly likely that the offset we obtained at the beginning will - // no longer be correct, so we simply disable mouse input. + } else if sigcont && !r.fullscreen && r.mouse { + // NOTE: SIGCONT (Coming back from CTRL-Z): + // It's highly likely that the offset we obtained at the beginning is + // no longer correct, so we simply disable mouse input. r.csi("?1000l") r.mouse = false } diff --git a/src/tui/tcell.go b/src/tui/tcell.go index db8916553e21d02e2e5454e36b5e18226ef4cb67..4d8096d36d311f6df8809e55f23bc9801f97830b 100644 --- a/src/tui/tcell.go +++ b/src/tui/tcell.go @@ -394,7 +394,7 @@ func (r *FullscreenRenderer) Pause(clear bool) { } } -func (r *FullscreenRenderer) Resume(clear bool) { +func (r *FullscreenRenderer) Resume(clear bool, sigcont bool) { if clear { r.initScreen() } diff --git a/src/tui/tui.go b/src/tui/tui.go index 4968b3664ebdda3a8b394a63c660118a33e6e2aa..f5ebb1616db0275d49b08defb8411ce1e1524d6c 100644 --- a/src/tui/tui.go +++ b/src/tui/tui.go @@ -275,7 +275,7 @@ func MakeTransparentBorder() BorderStyle { type Renderer interface { Init() Pause(clear bool) - Resume(clear bool) + Resume(clear bool, sigcont bool) Clear() RefreshWindows(windows []Window) Refresh()