X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=st.c;h=c0a4780aca6ee17d1933b9f3ff8c3d2101e4e782;hb=0851f2be2ab48ee3a67ef2287c09bd67622dcd8e;hp=f2ee12f4b61b4f22255fcdfbb59547d8f08e774e;hpb=db6f796ecfafcee879613b60a772be3e5d9e355e;p=st.git diff --git a/st.c b/st.c index f2ee12f..c0a4780 100644 --- a/st.c +++ b/st.c @@ -1425,6 +1425,8 @@ tclearregion(int x1, int y1, int x2, int y2) { for(y = y1; y <= y2; y++) { term.dirty[y] = 1; for(x = x1; x <= x2; x++) { + if(selected(x, y)) + selclear(NULL); term.line[y][x] = term.c.attr; memcpy(term.line[y][x].c, " ", 2); } @@ -2853,6 +2855,8 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { /* Clean up the region we want to draw to. */ XftDrawRect(xw.draw, bg, winx, winy, width, xw.ch); + + /* Set the clip region because Xft is sometimes dirty. */ r.x = 0; r.y = 0; r.height = xw.ch; @@ -3092,7 +3096,7 @@ drawregion(int x1, int y1, int x2, int y2) { ic = ib = ox = 0; for(x = x1; x < x2; x++) { new = term.line[y][x]; - if(ena_sel && *(new.c) && selected(x, y)) + if(ena_sel && selected(x, y)) new.mode ^= ATTR_REVERSE; if(ib > 0 && (ATTRCMP(base, new) || ib >= DRAW_BUF_SIZ-UTF_SIZ)) {