Skip to content

Commit

Permalink
Unset mode when clearing regions
Browse files Browse the repository at this point in the history
tclearregion() 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
the 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
the spaces at the right of second was underlined becuause in the
previous scrool underline mode was set.
  • Loading branch information
k0gaMSX committed Aug 7, 2014
1 parent ec32689 commit 8de8ae3
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions st.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}
}
}
Expand Down

0 comments on commit 8de8ae3

Please sign in to comment.