Introduction
Introduction Statistics Contact Development Disclaimer Help
tFix save/restore cursor - st - [fork] customized build of st, the simple termi…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 62ab938965f2673e029ae2e2a4244788e673bd70
parent 2b1bc8087f232a7b0ba4c7233e76be7abae25a88
Author: Mihail Zenkov <[email protected]>
Date: Tue, 1 Oct 2013 20:02:24 +0200
Fix save/restore cursor
st was assuming that save/restore cursor position was independent
of the screen that was shown in each moment, but it is not true,
because each screen has a different save/restore buffer. This
patch fixes it.
Diffstat:
M st.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
---
diff --git a/st.c b/st.c
t@@ -1342,13 +1342,14 @@ tfulldirt(void) {
void
tcursor(int mode) {
- static TCursor c;
+ static TCursor c[2];
+ bool alt = IS_SET(MODE_ALTSCREEN);
if(mode == CURSOR_SAVE) {
- c = term.c;
+ c[alt] = term.c;
} else if(mode == CURSOR_LOAD) {
- term.c = c;
- tmoveto(c.x, c.y);
+ term.c = c[alt];
+ tmoveto(c[alt].x, c[alt].y);
}
}
t@@ -1854,12 +1855,12 @@ tsetmode(bool priv, bool set, int *args, int narg) {
case 1034:
MODBIT(term.mode, set, MODE_8BIT);
break;
- case 1049: /* = 1047 and 1048 */
- case 47:
+ case 1049: /* swap screen & set/restore cursor as xter…
+ tcursor((set) ? CURSOR_SAVE : CURSOR_LOAD);
+ case 47: /* swap screen */
case 1047:
if (!allowaltscreen)
break;
-
alt = IS_SET(MODE_ALTSCREEN);
if(alt) {
tclearregion(0, 0, term.col-1,
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.