]> granicus.if.org Git - nethack/commitdiff
fix cl_eos() in NT tty port.
authornethack.allison <nethack.allison>
Tue, 5 Feb 2002 02:43:55 +0000 (02:43 +0000)
committernethack.allison <nethack.allison>
Tue, 5 Feb 2002 02:43:55 +0000 (02:43 +0000)
sys/winnt/nttty.c

index f668bb597bb02d21902ad0f6588175c098ef84be..359b5d6f00b63d4e87d4ca986cbcaa1ffc5c6453 100644 (file)
@@ -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);
 }