Allow use of TCELL_ALTSCREEN=disable to disable alternate screen.

This hack will also prevent the clearing of the screen at disengage
time.  This may be useful for certain kinds of applications that
want to draw the screen, then place the cursor at a specific location.
(The application will need to do a TGoto on it's own first.)
This commit is contained in:
Garrett D'Amore 2024-03-02 14:18:52 -08:00
parent 552bf3cec1
commit 6984e257e4
1 changed files with 12 additions and 3 deletions

View File

@ -1822,7 +1822,14 @@ func (t *tScreen) engage() error {
} }
ti := t.ti ti := t.ti
if os.Getenv("TCELL_ALTSCREEN") != "disable" {
// Technically this may not be right, but every terminal we know about
// (even Wyse 60) uses this to enter the alternate screen buffer, and
// possibly save and restore the window title and/or icon.
// (In theory there could be terminals that don't support X,Y cursor
// positions without a setup command, but we don't support them.)
t.TPuts(ti.EnterCA) t.TPuts(ti.EnterCA)
}
t.TPuts(ti.EnterKeypad) t.TPuts(ti.EnterKeypad)
t.TPuts(ti.HideCursor) t.TPuts(ti.HideCursor)
t.TPuts(ti.EnableAcs) t.TPuts(ti.EnableAcs)
@ -1865,10 +1872,12 @@ func (t *tScreen) disengage() {
} }
t.TPuts(ti.ResetFgBg) t.TPuts(ti.ResetFgBg)
t.TPuts(ti.AttrOff) t.TPuts(ti.AttrOff)
t.TPuts(ti.Clear)
t.TPuts(ti.ExitCA)
t.TPuts(ti.ExitKeypad) t.TPuts(ti.ExitKeypad)
t.TPuts(ti.EnableAutoMargin) t.TPuts(ti.EnableAutoMargin)
if os.Getenv("TCELL_ALTSCREEN") != "disable" {
t.TPuts(ti.Clear) // only needed if ExitCA is empty
t.TPuts(ti.ExitCA)
}
t.enableMouse(0) t.enableMouse(0)
t.enablePasting(false) t.enablePasting(false)
t.disableFocusReporting() t.disableFocusReporting()