tUnset mode when clearing regions - st - [fork] customized build of st, the sim… | |
git clone git://src.adamsgaard.dk/st | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 8de8ae3923b3b91b034077c8c35acba629588233 | |
parent ec3268961d1dc4072f6caa6f97db5436da2ff411 | |
Author: Roberto E. Vargas Caballero <[email protected]> | |
Date: Thu, 7 Aug 2014 10:11:38 +0200 | |
Unset mode when clearing regions | |
ttclearregion() was clearing regions using spaces and the current | |
attributes of the terminal. It was correct with all the modes excepct | |
underline, because they didn't affect the space character, but in | |
tthe case of underline it was a problem. A easy way of seeing this | |
problem is writing this in the last line of the terminal: | |
tput smul ; echo first; tput rmul; echo second; echo third | |
Fist was underlined, and second and third were not underlined, but | |
tthe spaces at the right of second was underlined becuause in the | |
previous scrool underline mode was set. | |
Diffstat: | |
M st.c | 8 ++++++-- | |
1 file changed, 6 insertions(+), 2 deletions(-) | |
--- | |
diff --git a/st.c b/st.c | |
t@@ -1553,6 +1553,7 @@ tsetchar(char *c, Glyph *attr, int x, int y) { | |
void | |
tclearregion(int x1, int y1, int x2, int y2) { | |
int x, y, temp; | |
+ Glyph *gp; | |
if(x1 > x2) | |
temp = x1, x1 = x2, x2 = temp; | |
t@@ -1567,10 +1568,13 @@ 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++) { | |
+ gp = &term.line[y][x]; | |
if(selected(x, y)) | |
selclear(NULL); | |
- term.line[y][x] = term.c.attr; | |
- memcpy(term.line[y][x].c, " ", 2); | |
+ gp->fg = term.c.attr.fg; | |
+ gp->bg = term.c.attr.bg; | |
+ gp->mode = 0; | |
+ memcpy(gp->c, " ", 2); | |
} | |
} | |
} |