Sfoglia il codice sorgente

Fix selecting clearing and BCE

The commit b78c5085f72 changed the st behaviour enabling BCE capability,
that means erase regions using background color. Problem comes when you
clear a region with a selection, because in this case the real mode of the
Glyph is not the value of term.line[y][x], due in drawregion we had enabled
the ATTR_REVERSE bit.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
Roberto E. Vargas Caballero 12 anni fa
parent
commit
048c54fd5b
1 ha cambiato i file con 3 aggiunte e 1 eliminazioni
  1. 3 1
      st.c

+ 3 - 1
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);
 		}
 	}