[Win32SS]

- Move WM_SETREDRAW and WM_SYNCPAINT to Win32k.
- Patch by Alex Henrie: Minimize and maximize boxes can only appear when WS_SYSMENU is set.

svn path=/trunk/; revision=57105
This commit is contained in:
James Tabor 2012-08-18 23:37:08 +00:00
parent eb4e6cb7ca
commit 89341a215c
2 changed files with 39 additions and 4 deletions

View file

@ -230,6 +230,40 @@ IntDefWindowProc(
return GetNCHitEx(Wnd, Point);
}
case WM_SYNCPAINT:
{
HRGN hRgn;
Wnd->state &= ~WNDS_SYNCPAINTPENDING;
ERR("WM_SYNCPAINT\n");
hRgn = IntSysCreateRectRgn(0, 0, 0, 0);
if (co_UserGetUpdateRgn(Wnd, hRgn, FALSE) != NULLREGION)
{
if (!wParam) wParam = (RDW_ERASENOW | RDW_ERASE | RDW_FRAME | RDW_ALLCHILDREN);
co_UserRedrawWindow(Wnd, NULL, hRgn, wParam);
}
GreDeleteObject(hRgn);
return 0;
}
case WM_SETREDRAW:
if (wParam)
{
if (!(Wnd->style & WS_VISIBLE))
{
IntSetStyle( Wnd, WS_VISIBLE, 0 );
Wnd->state |= WNDS_SENDNCPAINT;
}
}
else
{
if (Wnd->style & WS_VISIBLE)
{
co_UserRedrawWindow( Wnd, NULL, NULL, RDW_ALLCHILDREN | RDW_VALIDATE );
IntSetStyle( Wnd, 0, WS_VISIBLE );
}
}
return 0;
/* ReactOS only. */
case WM_CBT:
{
@ -373,8 +407,7 @@ GetNCHitEx(PWND pWnd, POINT pt)
rcWindow.top += UserGetSystemMetrics(SM_CYCAPTION) - 1;
if (!RECTL_bPointInRect( &rcWindow, pt.x, pt.y ))
{
BOOL min_or_max_box = (Style & WS_MAXIMIZEBOX) ||
(Style & WS_MINIMIZEBOX);
BOOL min_or_max_box = (Style & WS_SYSMENU) && (Style & (WS_MINIMIZEBOX|WS_MAXIMIZEBOX));
if (ExStyle & WS_EX_LAYOUTRTL)
{
/* Check system menu */

View file

@ -1245,7 +1245,7 @@ User32DefWindowProc(HWND hWnd,
}
return (0);
}
/*
case WM_SYNCPAINT:
{
HRGN hRgn;
@ -1272,7 +1272,7 @@ User32DefWindowProc(HWND hWnd,
}
return (0);
}
*/
case WM_CLOSE:
{
DestroyWindow(hWnd);
@ -1816,6 +1816,8 @@ User32DefWindowProc(HWND hWnd,
/* Move to win32k !*/
case WM_SHOWWINDOW:
if (!lParam) break; // Call when it is necessary.
case WM_SYNCPAINT:
case WM_SETREDRAW:
case WM_CLIENTSHUTDOWN:
case WM_GETHOTKEY:
case WM_SETHOTKEY: