Rein Klazes rklazes@xs4all.nl writes:
And does that call generate a WM_NCPAINT message?
No.
I have uploaded a +relay,+message,+win snip (300 KB) of the log at http://home.wanadoo.nl/wijn/tmp/wine2.log.bz2
OK, I see, it seems GetUpdateRect doesn't behave exactly like GetUpdateRgn. This should fix it I think:
Index: dlls/user/painting.c =================================================================== RCS file: /opt/cvs-commit/wine/dlls/user/painting.c,v retrieving revision 1.10 diff -u -p -r1.10 painting.c --- dlls/user/painting.c 26 Aug 2004 00:46:11 -0000 1.10 +++ dlls/user/painting.c 2 Sep 2004 17:35:12 -0000 @@ -314,8 +314,15 @@ INT WINAPI GetUpdateRgn( HWND hwnd, HRGN */ BOOL WINAPI GetUpdateRect( HWND hwnd, LPRECT rect, BOOL erase ) { + WND *wndPtr; + BOOL ret = FALSE; HRGN update_rgn = CreateRectRgn( 0, 0, 0, 0 ); - INT retval = GetUpdateRgn( hwnd, update_rgn, erase ); + + if (GetUpdateRgn( hwnd, update_rgn, erase ) == ERROR) + { + DeleteObject( update_rgn ); + return FALSE; + }
if (rect) { @@ -332,7 +339,13 @@ BOOL WINAPI GetUpdateRect( HWND hwnd, LP } DeleteObject( update_rgn );
- return (retval != ERROR && retval != NULLREGION); + wndPtr = WIN_GetPtr( hwnd ); + if (wndPtr && wndPtr != WND_OTHER_PROCESS) + { + ret = (wndPtr->hrgnUpdate != 0); + WIN_ReleasePtr( wndPtr ); + } + return ret; }