summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto E. Vargas Caballero <k0ga@shike2.com>2013-04-23 20:34:52 +0200
committerChristoph Lohmann <20h@r-36.net>2013-04-23 20:36:30 +0200
commit048c54fd5b275ac54d7819020485b77e99fcc469 (patch)
treecd6b6c5c21b1bef6ccbf56fe7cdd55b33683fc8c
parent6b03bb769a105f797bce40aa0258cf035266e7bf (diff)
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>
-rw-r--r--st.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/st.c b/st.c
index 7f53981..92854b4 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);
}
}