From 97a725fbd0e54cbc07e4d72661ea2bd2bb7c01c1 Mon Sep 17 00:00:00 2001
From: Junegunn Choi <junegunn.c@gmail.com>
Date: Mon, 18 May 2020 02:33:37 +0900
Subject: [PATCH] Do not disable mouse after execute(-silent) when --height
 option is used

The action takes place in the alternate screen so the offsets should
still be correct.
---
 src/terminal.go  |  6 +++---
 src/tui/dummy.go | 12 ++++++------
 src/tui/light.go | 10 +++++-----
 src/tui/tcell.go |  2 +-
 src/tui/tui.go   |  2 +-
 5 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/src/terminal.go b/src/terminal.go
index cb8f13c9..7bc79398 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 76a16e55..8fce77e5 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 3ff84870..cccf3a9b 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 db891655..4d8096d3 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 4968b366..f5ebb161 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()
-- 
GitLab