X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=st.c;h=8e9e895e61d0b61169695b14d79531eb18536aaf;hb=011c0f9e5bb87838afa90f2a33ba68920681e3ce;hp=7f53981f80cbd79a71f67f34505d1ea4175115d3;hpb=6b03bb769a105f797bce40aa0258cf035266e7bf;p=st.git diff --git a/st.c b/st.c index 7f53981..8e9e895 100644 --- a/st.c +++ b/st.c @@ -1410,7 +1410,7 @@ tsetchar(char *c, Glyph *attr, int x, int y) { void tclearregion(int x1, int y1, int x2, int y2) { - int x, y, temp; + int x, y, temp, mask; if(x1 > x2) temp = x1, x1 = x2, x2 = temp; @@ -1425,7 +1425,9 @@ 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++) { + mask = selected(x, y) ? ATTR_REVERSE : 0; term.line[y][x] = term.c.attr; + term.line[y][x].mode ^= mask; memcpy(term.line[y][x].c, " ", 2); } } @@ -3094,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)) {