st

fork of suckless's simple terminal
Index Commits Files Refs README LICENSE
commit 6b315558f8095b91988d5b305ed06e082da48889
parent 5f91983541014d34274087dbf723b48551f90fc0
Author: noname <noname@inventati.org>
Date:   Tue, 29 Apr 2014 02:35:22 +0400

Do not save cursor in tresize.

This patch fixes the bug introduced in
8f11e1cd034ff28ca47bb4955505db7fa8016ba8

To reproduce the bug:
1. Save cursor: printf '\e[s'
2. Load cursor: printf '\e[u'
3. Resize st window.
4. Load cursor again: printf '\e[u'

Diffstat:
Mst.c | 4+++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/st.c b/st.c
@@ -2634,6 +2634,7 @@ tresize(int col, int row) {
     int slide = term.c.y - row + 1;
     bool *bp;
     Line *orig;
+    TCursor c;
 
     if(col < 1 || row < 1)
         return 0;
@@ -2695,6 +2696,7 @@ tresize(int col, int row) {
     tmoveto(term.c.x, term.c.y);
     /* Clearing both screens */
     orig = term.line;
+    c = term.c;
     do {
         if(mincol < col && 0 < minrow) {
             tclearregion(mincol, 0, col - 1, minrow - 1);
@@ -2702,10 +2704,10 @@ tresize(int col, int row) {
         if(0 < col && minrow < row) {
             tclearregion(0, minrow, col - 1, row - 1);
         }
-        tcursor(CURSOR_SAVE);
         tswapscreen();
         tcursor(CURSOR_LOAD);
     } while(orig != term.line);
+    term.c = c;
 
     return (slide > 0);
 }