From 7637374948f54d5f0139109d8fd260e1b60277e2 Mon Sep 17 00:00:00 2001 From: "nethack.allison" Date: Tue, 5 Feb 2002 02:43:55 +0000 Subject: [PATCH] fix cl_eos() in NT tty port. --- sys/winnt/nttty.c | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/sys/winnt/nttty.c b/sys/winnt/nttty.c index f668bb597..359b5d6f0 100644 --- a/sys/winnt/nttty.c +++ b/sys/winnt/nttty.c @@ -121,11 +121,12 @@ void tty_startup(wid, hgt) int *wid, *hgt; { - int twid = origcsbi.dwSize.X; +/* int twid = origcsbi.dwSize.X; */ + int twid = origcsbi.srWindow.Right - origcsbi.srWindow.Left; if (twid > 80) twid = 80; *wid = twid; - *hgt = origcsbi.dwSize.Y; + *hgt = origcsbi.srWindow.Bottom - origcsbi.srWindow.Top; } void @@ -589,7 +590,7 @@ clear_screen() newcoord.Y = 0; FillConsoleOutputAttribute(hConOut, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE, - CO * LI, + csbi.dwSize.X * csbi.dwSize.Y, newcoord, &ccnt); newcoord.X = 0; newcoord.Y = 0; @@ -655,14 +656,33 @@ tty_delay_output() void cl_eos() { - - register int cy = ttyDisplay->cury+1; + register int cy = ttyDisplay->cury+1; +#if 0 while(cy <= LI-2) { cl_end(); xputc('\n'); cy++; } cl_end(); +#else + if (GetConsoleScreenBufferInfo(hConOut,&csbi)) { + int ccnt; + COORD newcoord; + + newcoord.X = 0; + newcoord.Y = ttyDisplay->cury; + FillConsoleOutputAttribute(hConOut, + FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE, + csbi.dwSize.X * csbi.dwSize.Y - cy, + newcoord, &ccnt); + newcoord.X = 0; + newcoord.Y = ttyDisplay->cury; + FillConsoleOutputCharacter(hConOut,' ', + csbi.dwSize.X * csbi.dwSize.Y - cy, + newcoord, &ccnt); + } + colorchange = TRUE; +#endif tty_curs(BASE_WINDOW, (int)ttyDisplay->curx+1, (int)ttyDisplay->cury); }