]> Sergey Matveev's repositories - st.git/blobdiff - st.c
Unhide cursor on RIS (\033c)
[st.git] / st.c
diff --git a/st.c b/st.c
index 134e7242e9b18d33dd82df401cbd266d9b9f30fd..d6478f55a2498f36bc1c0fa54bdff5de94e1b114 100644 (file)
--- a/st.c
+++ b/st.c
@@ -1097,7 +1097,7 @@ tscrollup(int orig, int n)
 void
 selscroll(int orig, int n)
 {
-       if (sel.ob.x == -1)
+       if (sel.ob.x == -1 || sel.alt != IS_SET(MODE_ALTSCREEN))
                return;
 
        if (BETWEEN(sel.nb.y, orig, term.bot) != BETWEEN(sel.ne.y, orig, term.bot)) {
@@ -2330,6 +2330,7 @@ eschandle(uchar ascii)
                treset();
                resettitle();
                xloadcols();
+               xsetmode(0, MODE_HIDE);
                break;
        case '=': /* DECPAM -- Application keypad */
                xsetmode(1, MODE_APPKEYPAD);
@@ -2471,11 +2472,16 @@ check_control_code:
                gp = &term.line[term.c.y][term.c.x];
        }
 
-       if (IS_SET(MODE_INSERT) && term.c.x+width < term.col)
+       if (IS_SET(MODE_INSERT) && term.c.x+width < term.col) {
                memmove(gp+width, gp, (term.col - term.c.x - width) * sizeof(Glyph));
+               gp->mode &= ~ATTR_WIDE;
+       }
 
        if (term.c.x+width > term.col) {
-               tnewline(1);
+               if (IS_SET(MODE_WRAP))
+                       tnewline(1);
+               else
+                       tmoveto(term.col - width, term.c.y);
                gp = &term.line[term.c.y][term.c.x];
        }