Introduction
Introduction Statistics Contact Development Disclaimer Help
tFix bug restoring cursor position - st - [fork] customized build of st, the si…
git clone git://src.adamsgaard.dk/st
Log
Files
Refs
README
LICENSE
---
commit 950ff21e17af487b205ea0b666be015790114fa7
parent 5d39afc9023bc9a692ba6faf590abf9397a890ae
Author: Roberto E. Vargas Caballero <[email protected]>
Date: Thu, 8 Nov 2012 17:15:26 +0100
Fix bug restoring cursor position
Sequences like DECSC, DECRC, ESC [?1047l or ESC [?1047h save and restore
cursor attributes, than taken from vt100 manual are:
Save Cursor (DECSC) ESC 7
===========================
Saves the following in terminal memory.
- cursor position
- graphic rendition
- character set shift state
- state of wrap flag
- state of origin mode
Restore Cursor (DECRC) ESC 8
===========================
Restores the states described for (DECSC) above. If none of these
characteristics were saved, the cursor moves to home position; origin
mode is reset; no character attributes are assigned; and the default
character set mapping is established.
This implies that hide attribute of the cursor should not be saved/restored
in these sequences. The best way to fix this problem is moving hide
attribute into the terminal mode, instead of having it in the cursor state.
---
st.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
Diffstat:
M st.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
---
diff --git a/st.c b/st.c
t@@ -96,8 +96,7 @@ enum cursor_movement {
enum cursor_state {
CURSOR_DEFAULT = 0,
- CURSOR_HIDE = 1,
- CURSOR_WRAPNEXT = 2
+ CURSOR_WRAPNEXT = 1,
};
enum glyph_state {
t@@ -115,7 +114,8 @@ enum term_mode {
MODE_MOUSEMOTION = 64,
MODE_MOUSE = 32|64,
MODE_REVERSE = 128,
- MODE_KBDLOCK = 256
+ MODE_KBDLOCK = 256,
+ MODE_HIDE = 512
};
enum escape_state {
t@@ -1464,8 +1464,8 @@ tsetmode(bool priv, bool set, int *args, int narg) {
case 0: /* Error (IGNORED) */
case 12: /* att610 -- Start blinking cursor (IGNORED) …
break;
- case 25:
- MODBIT(term.c.state, !set, CURSOR_HIDE);
+ case 25: /* DECTCEM -- Text Cursor Enable Mode */
+ MODBIT(term.mode, !set, MODE_HIDE);
break;
case 1000: /* 1000,1002: enable xterm mouse report */
MODBIT(term.mode, set, MODE_MOUSEBTN);
t@@ -2505,7 +2505,7 @@ xdrawcursor(void) {
}
/* draw the new one */
- if(!(term.c.state & CURSOR_HIDE)) {
+ if(!(IS_SET(MODE_HIDE))) {
if(!(xw.state & WIN_FOCUSED))
g.bg = defaultucs;
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.