Update of /cvsroot/netrek/client/netrekxp/src In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv484/src Modified Files: getname.c mswindow.c Log Message: Changing email address. Finalizing changes list and cleaning up todo list for release. Fix for messages that are printed outside viewable area - ScrollDC garbles scrolling in such cases, so instead we shall use a full window redraw if the window is beyond the client borders. Index: getname.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/getname.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- getname.c 12 May 2006 01:58:37 -0000 1.6 +++ getname.c 13 Jan 2007 02:53:27 -0000 1.7 @@ -79,11 +79,11 @@ " No one takes responsibility for lost INL games etc.", " Use at your own risk! If you don't like it, don't use it.", "", - "Comments, suggestions, bugreports to: williamb at its.caltech.edu", + "Comments, suggestions, bugreports to: billbalcerski at hotmail.com", "", "Include version and architecture info in bug reports", "", - "Patches to: williamb at its.caltech.edu", + "Patches to: billbalcerski at hotmail.com", "", }; int i, length; Index: mswindow.c =================================================================== RCS file: /cvsroot/netrek/client/netrekxp/src/mswindow.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- mswindow.c 12 Jan 2007 18:06:55 -0000 1.40 +++ mswindow.c 13 Jan 2007 02:53:27 -0000 1.41 @@ -4539,6 +4539,9 @@ struct stringList *p; int HiddenLines; int y; + int clipped = 0; + RECT r; + WINDOWPLACEMENT loc; FNHEADER_VOID; if (!win->AddedStrings) @@ -4546,6 +4549,8 @@ y = win->NumItems - win->TextHeight; y = max (0, y); + + loc.length = sizeof (WINDOWPLACEMENT); /* Have to set this */ // Just update scrollbar if we are looking back if ((y - win->AddedStrings) > GetScrollPos (win->hwnd, SB_VERT)) @@ -4554,12 +4559,22 @@ win->AddedStrings = 0; return; } - //Do full redraw if faster, only works for mapped windows - if (win->AddedStrings > (win->TextHeight / 2) && W_IsMapped(window)) + // For mapped windows, do full redraw if more than half of window content + // is changed, or if part of window is outside viewable area, because + // ScrollDC fails to properly scroll text in such cases + if (W_IsMapped(window)) { - InvalidateRect (win->hwnd, NULL, FALSE); - UpdateWindow (win->hwnd); //Generates paint msg, which calls RedrawScrolling - return; + GetWindowPlacement (win->hwnd, &loc); + GetWindowRect (((Window *) baseWin)->hwnd, &r); + if (loc.rcNormalPosition.left < r.left || loc.rcNormalPosition.right > r.right + || loc.rcNormalPosition.top < r.top || loc.rcNormalPosition.bottom > r.bottom) + clipped = 1; + if (win->AddedStrings > (win->TextHeight / 2) || clipped) + { + InvalidateRect (win->hwnd, NULL, FALSE); + UpdateWindow (win->hwnd); //Generates paint msg, which calls RedrawScrolling + return; + } } //Setup the HDC