diff options
-rw-r--r-- | win32/winansi.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/win32/winansi.c b/win32/winansi.c index c47e29a28..0a637670c 100644 --- a/win32/winansi.c +++ b/win32/winansi.c | |||
@@ -101,6 +101,9 @@ static void erase_in_line(void) | |||
101 | FillConsoleOutputCharacterA(console, ' ', | 101 | FillConsoleOutputCharacterA(console, ' ', |
102 | sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, | 102 | sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, |
103 | &dummy); | 103 | &dummy); |
104 | FillConsoleOutputAttribute(console, plain_attr, | ||
105 | sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, | ||
106 | &dummy); | ||
104 | } | 107 | } |
105 | 108 | ||
106 | static void erase_till_end_of_screen(void) | 109 | static void erase_till_end_of_screen(void) |
@@ -116,11 +119,17 @@ static void erase_till_end_of_screen(void) | |||
116 | FillConsoleOutputCharacterA(console, ' ', | 119 | FillConsoleOutputCharacterA(console, ' ', |
117 | sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, | 120 | sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, |
118 | &dummy); | 121 | &dummy); |
122 | FillConsoleOutputAttribute(console, plain_attr, | ||
123 | sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, | ||
124 | &dummy); | ||
119 | 125 | ||
120 | pos.X = 0; | 126 | pos.X = 0; |
121 | for (pos.Y = sbi.dwCursorPosition.Y+1; pos.Y < sbi.dwSize.Y; pos.Y++) | 127 | for (pos.Y = sbi.dwCursorPosition.Y+1; pos.Y < sbi.dwSize.Y; pos.Y++) { |
122 | FillConsoleOutputCharacterA(console, ' ', sbi.dwSize.X, | 128 | FillConsoleOutputCharacterA(console, ' ', sbi.dwSize.X, |
123 | pos, &dummy); | 129 | pos, &dummy); |
130 | FillConsoleOutputAttribute(console, plain_attr, sbi.dwSize.X, | ||
131 | pos, &dummy); | ||
132 | } | ||
124 | } | 133 | } |
125 | 134 | ||
126 | static void move_cursor_row(int n) | 135 | static void move_cursor_row(int n) |
@@ -313,11 +322,13 @@ static const char *set_attr(const char *str) | |||
313 | if (!len) | 322 | if (!len) |
314 | move_cursor(0, 0); | 323 | move_cursor(0, 0); |
315 | else { | 324 | else { |
316 | int row = strtol(str, (char **)&str, 10); | 325 | int row, col = 1; |
326 | |||
327 | row = strtol(str, (char **)&str, 10); | ||
317 | if (*str == ';') { | 328 | if (*str == ';') { |
318 | int col = strtol(str+1, (char **)&str, 10); | 329 | col = strtol(str+1, (char **)&str, 10); |
319 | move_cursor(col-1, row-1); | ||
320 | } | 330 | } |
331 | move_cursor(col > 0 ? col-1 : 0, row > 0 ? row-1 : 0); | ||
321 | } | 332 | } |
322 | break; | 333 | break; |
323 | case 'J': | 334 | case 'J': |