Skip to content

Commit

Permalink
Fill console attributes when erasing the screen on windows to not lea…
Browse files Browse the repository at this point in the history
…ve unwanted backgrounds on the screen
  • Loading branch information
gnodet committed Sep 29, 2015
1 parent bf3b544 commit 620c446
Showing 1 changed file with 7 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import static org.fusesource.jansi.internal.Kernel32.FOREGROUND_GREEN;
import static org.fusesource.jansi.internal.Kernel32.FOREGROUND_INTENSITY;
import static org.fusesource.jansi.internal.Kernel32.FOREGROUND_RED;
import static org.fusesource.jansi.internal.Kernel32.FillConsoleOutputAttributeW;
import static org.fusesource.jansi.internal.Kernel32.FillConsoleOutputCharacterW;
import static org.fusesource.jansi.internal.Kernel32.GetConsoleScreenBufferInfo;
import static org.fusesource.jansi.internal.Kernel32.GetStdHandle;
Expand Down Expand Up @@ -145,6 +146,7 @@ protected void processEraseScreen(int eraseOption) throws IOException {
topLeft.x = 0;
topLeft.y = info.window.top;
int screenLength = info.window.height() * info.size.x;
FillConsoleOutputAttributeW(console, originalColors, screenLength, topLeft, written);
FillConsoleOutputCharacterW(console, ' ', screenLength, topLeft, written);
break;
case ERASE_SCREEN_TO_BEGINING:
Expand All @@ -153,11 +155,13 @@ protected void processEraseScreen(int eraseOption) throws IOException {
topLeft2.y = info.window.top;
int lengthToCursor = (info.cursorPosition.y - info.window.top) * info.size.x
+ info.cursorPosition.x;
FillConsoleOutputAttributeW(console, originalColors, lengthToCursor, topLeft2, written);
FillConsoleOutputCharacterW(console, ' ', lengthToCursor, topLeft2, written);
break;
case ERASE_SCREEN_TO_END:
int lengthToEnd = (info.window.bottom - info.cursorPosition.y) * info.size.x +
(info.size.x - info.cursorPosition.x);
FillConsoleOutputAttributeW(console, originalColors, lengthToEnd, info.cursorPosition.copy(), written);
FillConsoleOutputCharacterW(console, ' ', lengthToEnd, info.cursorPosition.copy(), written);
}
}
Expand All @@ -170,15 +174,18 @@ protected void processEraseLine(int eraseOption) throws IOException {
case ERASE_LINE:
COORD leftColCurrRow = info.cursorPosition.copy();
leftColCurrRow.x = 0;
FillConsoleOutputAttributeW(console, originalColors, info.size.x, leftColCurrRow, written);
FillConsoleOutputCharacterW(console, ' ', info.size.x, leftColCurrRow, written);
break;
case ERASE_LINE_TO_BEGINING:
COORD leftColCurrRow2 = info.cursorPosition.copy();
leftColCurrRow2.x = 0;
FillConsoleOutputAttributeW(console, originalColors, info.cursorPosition.x, leftColCurrRow2, written);
FillConsoleOutputCharacterW(console, ' ', info.cursorPosition.x, leftColCurrRow2, written);
break;
case ERASE_LINE_TO_END:
int lengthToLastCol = info.size.x - info.cursorPosition.x;
FillConsoleOutputAttributeW(console, originalColors, lengthToLastCol, info.cursorPosition.copy(), written);
FillConsoleOutputCharacterW(console, ' ', lengthToLastCol, info.cursorPosition.copy(), written);
}
}
Expand Down

0 comments on commit 620c446

Please sign in to comment.