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); } }