X-Git-Url: https://git.xinqibao.xyz/st.git/blobdiff_plain/d693b304c78708acb911773fe24971ef969d237e..9e004846def39ee73eeb06ba9b1be0e389752441:/st.c?ds=sidebyside diff --git a/st.c b/st.c index e636b63..0c6423a 100644 --- a/st.c +++ b/st.c @@ -627,12 +627,13 @@ tscrollup(int orig, int n) { void tnewline(void) { + int x = term.c.x+1 < term.col ? term.c.x : 0; int y = term.c.y; if(term.c.y == term.bot) tscrollup(term.top, 1); else y++; - tmoveto(0, y); + tmoveto(x, y); } void @@ -677,7 +678,7 @@ tsetchar(char c) { void tclearregion(int x1, int y1, int x2, int y2) { - int y, temp; + int x, y, temp; if(x1 > x2) temp = x1, x1 = x2, x2 = temp; @@ -690,7 +691,8 @@ tclearregion(int x1, int y1, int x2, int y2) { LIMIT(y2, 0, term.row-1); for(y = y1; y <= y2; y++) - memset(&term.line[y][x1], 0, sizeof(Glyph)*(x2-x1+1)); + for(x = x1; x <= x2; x++) + term.line[y][x].state = 0; } void @@ -1192,7 +1194,7 @@ tputs(char *s, int len) { void tresize(int col, int row) { - int i; + int i, x; int minrow = MIN(row, term.row); int mincol = MIN(col, term.col); int slide = term.c.y - row + 1; @@ -1226,8 +1228,10 @@ tresize(int col, int row) { for(i = 0; i < minrow; i++) { term.line[i] = realloc(term.line[i], col * sizeof(Glyph)); term.alt[i] = realloc(term.alt[i], col * sizeof(Glyph)); - memset(term.line[i] + mincol, 0, (col - mincol) * sizeof(Glyph)); - memset(term.alt[i] + mincol, 0, (col - mincol) * sizeof(Glyph)); + for(x = mincol; x < col; x++) { + term.line[i][x].state = 0; + term.alt[i][x].state = 0; + } } /* allocate any new rows */ @@ -1563,7 +1567,7 @@ kpress(XEvent *ev) { break; case XK_Insert: if(shift) - selpaste(), draw(1); + selpaste(); break; default: fprintf(stderr, "errkey: %d\n", (int)ksym);