aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--win32/winansi.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/win32/winansi.c b/win32/winansi.c
index 0a637670c..5d4adbec8 100644
--- a/win32/winansi.c
+++ b/win32/winansi.c
@@ -109,27 +109,20 @@ static void erase_in_line(void)
109static void erase_till_end_of_screen(void) 109static void erase_till_end_of_screen(void)
110{ 110{
111 CONSOLE_SCREEN_BUFFER_INFO sbi; 111 CONSOLE_SCREEN_BUFFER_INFO sbi;
112 COORD pos; 112 DWORD dummy, len;
113 DWORD dummy;
114 113
115 if (!console) 114 if (!console)
116 return; 115 return;
117 116
118 GetConsoleScreenBufferInfo(console, &sbi); 117 GetConsoleScreenBufferInfo(console, &sbi);
119 FillConsoleOutputCharacterA(console, ' ', 118 len = sbi.dwSize.X - sbi.dwCursorPosition.X +
120 sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition, 119 sbi.dwSize.X * (sbi.srWindow.Bottom - sbi.dwCursorPosition.Y);
120
121 FillConsoleOutputCharacterA(console, ' ', len, sbi.dwCursorPosition,
121 &dummy); 122 &dummy);
122 FillConsoleOutputAttribute(console, plain_attr, 123 FillConsoleOutputAttribute(console, plain_attr, len, sbi.dwCursorPosition,
123 sbi.dwSize.X - sbi.dwCursorPosition.X, sbi.dwCursorPosition,
124 &dummy); 124 &dummy);
125 125
126 pos.X = 0;
127 for (pos.Y = sbi.dwCursorPosition.Y+1; pos.Y < sbi.dwSize.Y; pos.Y++) {
128 FillConsoleOutputCharacterA(console, ' ', sbi.dwSize.X,
129 pos, &dummy);
130 FillConsoleOutputAttribute(console, plain_attr, sbi.dwSize.X,
131 pos, &dummy);
132 }
133} 126}
134 127
135static void move_cursor_row(int n) 128static void move_cursor_row(int n)
@@ -159,12 +152,14 @@ static void move_cursor_column(int n)
159static void move_cursor(int x, int y) 152static void move_cursor(int x, int y)
160{ 153{
161 COORD pos; 154 COORD pos;
155 CONSOLE_SCREEN_BUFFER_INFO sbi;
162 156
163 if (!console) 157 if (!console)
164 return; 158 return;
165 159
166 pos.X = x; 160 GetConsoleScreenBufferInfo(console, &sbi);
167 pos.Y = y; 161 pos.X = sbi.srWindow.Left + x;
162 pos.Y = sbi.srWindow.Top + y;
168 SetConsoleCursorPosition(console, pos); 163 SetConsoleCursorPosition(console, pos);
169} 164}
170 165