JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Fixing the selection issue in altscreens.
[st.git] / st.c
diff --git a/st.c b/st.c
index 92854b4..c0a4780 100644 (file)
--- 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, mask;
+       int x, y, temp;
 
        if(x1 > x2)
                temp = x1, x1 = x2, x2 = temp;
@@ -1425,9 +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;
+                       if(selected(x, y))
+                               selclear(NULL);
                        term.line[y][x] = term.c.attr;
-                       term.line[y][x].mode ^= mask;
                        memcpy(term.line[y][x].c, " ", 2);
                }
        }
@@ -3096,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)) {