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);
}
}
Show replies by date