Rein Klazes wijn@wanadoo.nl writes:
windows : scroll.c dlls/user/tests : win.c
If ScrollWindowEx is called with SW_SCROLLCHILDREN flags for a window with a WS_CLIPCHILDREN style, then do not use the DCX_USESTYLE flag option to get a DC for this window. With a couple of regression tests.
DCX_USESTYLE has other effects, is it really correct to disable them all? And if so, wouldn't it be better to never use DCX_USESTYLE?
On 29 Mar 2005 21:03:27 +0200, you wrote:
Rein Klazes wijn@wanadoo.nl writes:
windows : scroll.c dlls/user/tests : win.c
If ScrollWindowEx is called with SW_SCROLLCHILDREN flags for a window with a WS_CLIPCHILDREN style, then do not use the DCX_USESTYLE flag option to get a DC for this window. With a couple of regression tests.
DCX_USESTYLE has other effects, is it really correct to disable them all? And if so, wouldn't it be better to never use DCX_USESTYLE?
Close inspection today shows that you were correct to be concerned, my patch relies on a problem with GetDCEx(): it looks like the DCX_CLIPSIBLINGS flag is always active. You can see this by changing the GetDC( hwnd1) in test_scrollvalidate() to GetDCEx( hwnd1, 0, DCX_CACHE). Under Windows this makes all the tests depending on the WS_CLIPSIBLINGS fail, under Wine those tests still succeed.
I cannot use DCX_USESTYLE because there appears not to be something like a DCX_NOCLIPCHILDREN flag. So here is the next attempt, using the meaning of DCX_USESTYLE except where I do not need it.
Changelog:
windows : scroll.c dlls/user/tests : win.c
If ScrollWindowEx do not use the DCX_USESTYLE to get a DC. Instead calculate DCX_CLIPSIBLINGS, DCX_PARENTCLIP and DCX_CLIPCHILDREN. The DCX_CLIPCHILDREN is not used when ScrollWindowEx is called with a SW_SCROLLCHILDREN flag. With a couple of regression tests.
Rein.