From 13a05c3f0ca748e82e573d4fb20cad7d54226b67 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Wed, 23 Sep 2009 16:18:15 +0800 Subject: [PATCH] Fixed VTerm Clear to use current colour instead of black --- Kernel/drv/vterm.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/Kernel/drv/vterm.c b/Kernel/drv/vterm.c index 20ba90e5..6ed0cdd5 100644 --- a/Kernel/drv/vterm.c +++ b/Kernel/drv/vterm.c @@ -356,6 +356,21 @@ void VT_int_PutString(tVTerm *Term, Uint8 *Buffer, Uint Count) } } +/** + * \fn void VT_int_ClearLine(tVTerm *Term, int Num) + * \brief Clears a line in a virtual terminal + */ +void VT_int_ClearLine(tVTerm *Term, int Num) +{ + int i; + memset(Term->Text, 0, Term->Width*Term->Height*VT_SCROLLBACK*sizeof(tVT_Char)); + for( i = Term->Width; i++; ) + { + Term->Text[ Num*Term->Width + i ].Ch = 0; + Term->Text[ Num*Term->Width + i ].Colour = Term->CurColour; + } +} + /** * \fn int VT_int_ParseEscape(tVTerm *Term, char *Buffer) * \brief Parses a VT100 Escape code @@ -394,11 +409,17 @@ int VT_int_ParseEscape(tVTerm *Term, char *Buffer) //Clear By Line case 'J': // Clear Screen - if(args[0] == 2) { - memset(Term->Text, 0, Term->Width*Term->Height*VT_SCROLLBACK*sizeof(tVT_Char)); + switch(args[0]) + { + case 2: + { + int i = Term->Height * VT_SCROLLBACK;; + while( i-- ) VT_int_ClearLine(Term, i); Term->WritePos = 0; Term->ViewPos = 0; VT_int_UpdateScreen(Term, 1); + } + break; } break; // Set Font flags -- 2.20.1