Make sure that WM_NCPAINT messages are generated by calling BeginPaint
Modified: trunk/reactos/subsys/csrss/win32csr/guiconsole.c

Modified: trunk/reactos/subsys/csrss/win32csr/guiconsole.c
--- trunk/reactos/subsys/csrss/win32csr/guiconsole.c	2005-12-04 22:31:43 UTC (rev 19894)
+++ trunk/reactos/subsys/csrss/win32csr/guiconsole.c	2005-12-04 22:33:18 UTC (rev 19895)
@@ -360,65 +360,56 @@
 static VOID FASTCALL
 GuiConsoleHandlePaint(HWND hWnd, HDC hDCPaint)
 {
-    RECT rcUpdate;
     HDC hDC;
     PAINTSTRUCT ps;
     PCSRSS_CONSOLE Console;
     PGUI_CONSOLE_DATA GuiData;
 
-    if (GetUpdateRect(hWnd,
-                      &rcUpdate,
-                      FALSE))
+    hDC = BeginPaint(hWnd, &ps);
+    if (hDC != NULL &&
+        ps.rcPaint.left < ps.rcPaint.right &&
+        ps.rcPaint.top < ps.rcPaint.bottom)
     {
-        hDC = (hDCPaint != NULL ? hDCPaint : BeginPaint(hWnd,
-                                                        &ps));
-        if (hDC != NULL)
+        GuiConsoleGetDataPointers(hWnd,
+                                  &Console,
+                                  &GuiData);
+        if (Console != NULL && GuiData != NULL &&
+            Console->ActiveBuffer != NULL)
         {
-            GuiConsoleGetDataPointers(hWnd,
-                                      &Console,
-                                      &GuiData);
-            if (Console != NULL && GuiData != NULL &&
-                Console->ActiveBuffer != NULL)
-            {
-                EnterCriticalSection(&GuiData->Lock);
+            EnterCriticalSection(&GuiData->Lock);
 
-                GuiConsolePaint(Console,
-                                GuiData,
-                                hDC,
-                                &rcUpdate);
+            GuiConsolePaint(Console,
+                            GuiData,
+                            hDC,
+                            &ps.rcPaint);
 
-                if (GuiData->Selection.left != -1)
-                {
-                    RECT rc = GuiData->Selection;
+            if (GuiData->Selection.left != -1)
+            {
+                RECT rc = GuiData->Selection;
 
-                    rc.left *= GuiData->CharWidth;
-                    rc.top *= GuiData->CharHeight;
-                    rc.right *= GuiData->CharWidth;
-                    rc.bottom *= GuiData->CharHeight;
+                rc.left *= GuiData->CharWidth;
+                rc.top *= GuiData->CharHeight;
+                rc.right *= GuiData->CharWidth;
+                rc.bottom *= GuiData->CharHeight;
 
-                    /* invert the selection */
-                    if (IntersectRect(&rc,
-                                      &rcUpdate,
-                                      &rc))
-                    {
-                        PatBlt(hDC,
-                               rc.left,
-                               rc.top,
-                               rc.right - rc.left,
-                               rc.bottom - rc.top,
-                               DSTINVERT);
-                    }
+                /* invert the selection */
+                if (IntersectRect(&rc,
+                                  &ps.rcPaint,
+                                  &rc))
+                {
+                    PatBlt(hDC,
+                           rc.left,
+                           rc.top,
+                           rc.right - rc.left,
+                           rc.bottom - rc.top,
+                           DSTINVERT);
                 }
-
-                LeaveCriticalSection(&GuiData->Lock);
             }
 
-            if (hDCPaint == NULL)
-            {
-                EndPaint(hWnd,
-                         &ps);
-            }
+            LeaveCriticalSection(&GuiData->Lock);
         }
+
+        EndPaint(hWnd, &ps);
     }
 }