summaryrefslogtreecommitdiffstats
path: root/src/tui
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2017-04-28 22:58:08 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2017-04-28 22:58:08 +0900
commitd34e4cf6984a139c12646d21771526e1e2a6f4f7 (patch)
treed3124713871b7c62c3b1bbfe1e8a3347d96f20f0 /src/tui
parent6b592137b966299a8a1324ccb1ddf3d6aaa7bbc9 (diff)
Support CTRL-Z (SIGSTOP)
Diffstat (limited to 'src/tui')
-rw-r--r--src/tui/dummy.go12
-rw-r--r--src/tui/light.go38
-rw-r--r--src/tui/ncurses.go5
-rw-r--r--src/tui/tcell.go9
-rw-r--r--src/tui/tui.go4
5 files changed, 36 insertions, 32 deletions
diff --git a/src/tui/dummy.go b/src/tui/dummy.go
index 60a23fb6..c96ce8eb 100644
--- a/src/tui/dummy.go
+++ b/src/tui/dummy.go
@@ -25,13 +25,13 @@ const (
Reverse = Attr(1 << 6)
)
-func (r *FullscreenRenderer) Init() {}
-func (r *FullscreenRenderer) Pause() {}
-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) {}
+func (r *FullscreenRenderer) Clear() {}
+func (r *FullscreenRenderer) Refresh() {}
+func (r *FullscreenRenderer) Close() {}
-func (r *FullscreenRenderer) Resume() bool { return false }
func (r *FullscreenRenderer) DoesAutoWrap() bool { return false }
func (r *FullscreenRenderer) IsOptimized() bool { return false }
func (r *FullscreenRenderer) GetChar() Event { return Event{} }
diff --git a/src/tui/light.go b/src/tui/light.go
index 7819050c..be6950c8 100644
--- a/src/tui/light.go
+++ b/src/tui/light.go
@@ -522,27 +522,35 @@ func (r *LightRenderer) rmcup() {
r.csi("?1049l")
}
-func (r *LightRenderer) Pause() {
+func (r *LightRenderer) Pause(clear bool) {
terminal.Restore(r.fd(), r.origState)
- if r.fullscreen {
- r.rmcup()
- } else {
- r.smcup()
- r.csi("H")
+ if clear {
+ if r.fullscreen {
+ r.rmcup()
+ } else {
+ r.smcup()
+ r.csi("H")
+ }
+ r.flush()
}
- r.flush()
}
-func (r *LightRenderer) Resume() bool {
+func (r *LightRenderer) Resume(clear bool) {
terminal.MakeRaw(r.fd())
- if r.fullscreen {
- r.smcup()
- } else {
- r.rmcup()
+ if clear {
+ if r.fullscreen {
+ r.smcup()
+ } else {
+ 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.
+ r.csi("?1000l")
+ r.mouse = false
}
- r.flush()
- // Should redraw
- return true
}
func (r *LightRenderer) Clear() {
diff --git a/src/tui/ncurses.go b/src/tui/ncurses.go
index ba3a1cfb..3263c397 100644
--- a/src/tui/ncurses.go
+++ b/src/tui/ncurses.go
@@ -176,12 +176,11 @@ func initPairs(theme *ColorTheme) {
}
}
-func (r *FullscreenRenderer) Pause() {
+func (r *FullscreenRenderer) Pause(bool) {
C.endwin()
}
-func (r *FullscreenRenderer) Resume() bool {
- return false
+func (r *FullscreenRenderer) Resume(bool) {
}
func (r *FullscreenRenderer) Close() {
diff --git a/src/tui/tcell.go b/src/tui/tcell.go
index bda5d082..3a8c7655 100644
--- a/src/tui/tcell.go
+++ b/src/tui/tcell.go
@@ -282,7 +282,7 @@ func (r *FullscreenRenderer) GetChar() Event {
return Event{keyfn('z'), 0, nil}
case tcell.KeyCtrlSpace:
return Event{CtrlSpace, 0, nil}
- case tcell.KeyBackspace, tcell.KeyBackspace2:
+ case tcell.KeyBackspace2:
if alt {
return Event{AltBS, 0, nil}
}
@@ -308,8 +308,6 @@ func (r *FullscreenRenderer) GetChar() Event {
case tcell.KeyPgDn:
return Event{PgDn, 0, nil}
- case tcell.KeyTab:
- return Event{Tab, 0, nil}
case tcell.KeyBacktab:
return Event{BTab, 0, nil}
@@ -366,13 +364,12 @@ func (r *FullscreenRenderer) GetChar() Event {
return Event{Invalid, 0, nil}
}
-func (r *FullscreenRenderer) Pause() {
+func (r *FullscreenRenderer) Pause(bool) {
_screen.Fini()
}
-func (r *FullscreenRenderer) Resume() bool {
+func (r *FullscreenRenderer) Resume(bool) {
r.initScreen()
- return true
}
func (r *FullscreenRenderer) Close() {
diff --git a/src/tui/tui.go b/src/tui/tui.go
index d360c4ec..c638b35a 100644
--- a/src/tui/tui.go
+++ b/src/tui/tui.go
@@ -206,8 +206,8 @@ const (
type Renderer interface {
Init()
- Pause()
- Resume() bool
+ Pause(clear bool)
+ Resume(clear bool)
Clear()
RefreshWindows(windows []Window)
Refresh()