mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
- Move WINDOWOBJECT_NEED_INTERNALPAINT flag handling to NtGdiBeginPaint.
- Fix IntGetPaintMessage to not return TRUE when no message was returned. - IntIsWindowDirty shouldn't check for the WINDOWOBJECT_NEED_NCPAINT flag (at least not now). svn path=/trunk/; revision=14246
This commit is contained in:
parent
b1367292b1
commit
3a6ab460dd
1 changed files with 11 additions and 30 deletions
|
@ -144,16 +144,6 @@ IntPaintWindows(PWINDOW_OBJECT Window, ULONG Flags)
|
||||||
Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
||||||
{
|
{
|
||||||
IntSendMessage(hWnd, WM_PAINT, 0, 0);
|
IntSendMessage(hWnd, WM_PAINT, 0, 0);
|
||||||
IntLockWindowUpdate(Window);
|
|
||||||
if (Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
|
||||||
{
|
|
||||||
Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT;
|
|
||||||
if (Window->UpdateRegion == NULL)
|
|
||||||
{
|
|
||||||
MsqDecPaintCountQueue(Window->MessageQueue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
IntUnLockWindowUpdate(Window);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -547,8 +537,7 @@ IntIsWindowDirty(PWINDOW_OBJECT Window)
|
||||||
{
|
{
|
||||||
return (Window->Style & WS_VISIBLE) &&
|
return (Window->Style & WS_VISIBLE) &&
|
||||||
((Window->UpdateRegion != NULL) ||
|
((Window->UpdateRegion != NULL) ||
|
||||||
(Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT) ||
|
(Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT));
|
||||||
(Window->Flags & WINDOWOBJECT_NEED_NCPAINT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HWND STDCALL
|
HWND STDCALL
|
||||||
|
@ -614,6 +603,10 @@ IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax,
|
||||||
if (!MessageQueue->PaintPosted)
|
if (!MessageQueue->PaintPosted)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
if ((MsgFilterMin != 0 || MsgFilterMax != 0) &&
|
||||||
|
(MsgFilterMin > WM_PAINT || MsgFilterMax < WM_PAINT))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
if (hWnd)
|
if (hWnd)
|
||||||
Message->hwnd = IntFindWindowToRepaint(hWnd, PsGetWin32Thread());
|
Message->hwnd = IntFindWindowToRepaint(hWnd, PsGetWin32Thread());
|
||||||
else
|
else
|
||||||
|
@ -635,25 +628,10 @@ IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax,
|
||||||
Window = IntGetWindowObject(Message->hwnd);
|
Window = IntGetWindowObject(Message->hwnd);
|
||||||
if (Window != NULL)
|
if (Window != NULL)
|
||||||
{
|
{
|
||||||
IntLockWindowUpdate(Window);
|
Message->message = WM_PAINT;
|
||||||
|
Message->wParam = Message->lParam = 0;
|
||||||
if ((MsgFilterMin == 0 && MsgFilterMax == 0) ||
|
|
||||||
(MsgFilterMin <= WM_PAINT && WM_PAINT <= MsgFilterMax))
|
|
||||||
{
|
|
||||||
Message->message = WM_PAINT;
|
|
||||||
Message->wParam = Message->lParam = 0;
|
|
||||||
if (Remove && Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
|
||||||
{
|
|
||||||
Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT;
|
|
||||||
if (Window->UpdateRegion == NULL)
|
|
||||||
{
|
|
||||||
MsqDecPaintCountQueue(Window->MessageQueue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
IntUnLockWindowUpdate(Window);
|
|
||||||
|
|
||||||
IntReleaseWindowObject(Window);
|
IntReleaseWindowObject(Window);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -779,8 +757,11 @@ NtUserBeginPaint(HWND hWnd, PAINTSTRUCT* UnsafePs)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (Window->Flags & WINDOWOBJECT_NEED_INTERNALPAINT)
|
||||||
|
MsqDecPaintCountQueue(Window->MessageQueue);
|
||||||
IntGetClientRect(Window, &Ps.rcPaint);
|
IntGetClientRect(Window, &Ps.rcPaint);
|
||||||
}
|
}
|
||||||
|
Window->Flags &= ~WINDOWOBJECT_NEED_INTERNALPAINT;
|
||||||
IntUnLockWindowUpdate(Window);
|
IntUnLockWindowUpdate(Window);
|
||||||
|
|
||||||
if (Window->Flags & WINDOWOBJECT_NEED_ERASEBKGND)
|
if (Window->Flags & WINDOWOBJECT_NEED_ERASEBKGND)
|
||||||
|
|
Loading…
Reference in a new issue