diff options
| author | noname <noname@inventati.org> | 2014-04-29 02:35:22 +0400 |
|---|---|---|
| committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2014-04-29 15:17:50 +0200 |
| commit | 6b315558f8095b91988d5b305ed06e082da48889 (patch) | |
| tree | 257aced6b0ea731190d9f8b4164ad5e9ff9ea3c4 | |
| parent | 5f91983541014d34274087dbf723b48551f90fc0 (diff) | |
| download | st-6b315558f8095b91988d5b305ed06e082da48889.tar.gz st-6b315558f8095b91988d5b305ed06e082da48889.zip | |
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'
| -rw-r--r-- | st.c | 4 |
1 files changed, 3 insertions, 1 deletions
| @@ -2634,6 +2634,7 @@ tresize(int col, int row) { | |||
| 2634 | int slide = term.c.y - row + 1; | 2634 | int slide = term.c.y - row + 1; |
| 2635 | bool *bp; | 2635 | bool *bp; |
| 2636 | Line *orig; | 2636 | Line *orig; |
| 2637 | TCursor c; | ||
| 2637 | 2638 | ||
| 2638 | if(col < 1 || row < 1) | 2639 | if(col < 1 || row < 1) |
| 2639 | return 0; | 2640 | return 0; |
| @@ -2695,6 +2696,7 @@ tresize(int col, int row) { | |||
| 2695 | tmoveto(term.c.x, term.c.y); | 2696 | tmoveto(term.c.x, term.c.y); |
| 2696 | /* Clearing both screens */ | 2697 | /* Clearing both screens */ |
| 2697 | orig = term.line; | 2698 | orig = term.line; |
| 2699 | c = term.c; | ||
| 2698 | do { | 2700 | do { |
| 2699 | if(mincol < col && 0 < minrow) { | 2701 | if(mincol < col && 0 < minrow) { |
| 2700 | tclearregion(mincol, 0, col - 1, minrow - 1); | 2702 | tclearregion(mincol, 0, col - 1, minrow - 1); |
| @@ -2702,10 +2704,10 @@ tresize(int col, int row) { | |||
| 2702 | if(0 < col && minrow < row) { | 2704 | if(0 < col && minrow < row) { |
| 2703 | tclearregion(0, minrow, col - 1, row - 1); | 2705 | tclearregion(0, minrow, col - 1, row - 1); |
| 2704 | } | 2706 | } |
| 2705 | tcursor(CURSOR_SAVE); | ||
| 2706 | tswapscreen(); | 2707 | tswapscreen(); |
| 2707 | tcursor(CURSOR_LOAD); | 2708 | tcursor(CURSOR_LOAD); |
| 2708 | } while(orig != term.line); | 2709 | } while(orig != term.line); |
| 2710 | term.c = c; | ||
| 2709 | 2711 | ||
| 2710 | return (slide > 0); | 2712 | return (slide > 0); |
| 2711 | } | 2713 | } |
