Default background erase code does not respect WM_CLIPSIBLINGS
Troy Rollo
wine at troy.rollo.name
Wed Aug 23 23:18:37 CDT 2006
The attached program demonstrates a bug in the default background-erase code
in send_erase (dlls/user/painting.c). The code includes a top level window
with WS_CLIPCHILDREN | WS_CLIPSIBLINGS, and two overlapping child windows -
one that draws nothing and has a white background (first child), and the
other being a standard drop-down list (second child).
When the window is first created the second child is completely visible,
having drawn over the first child. Click anywhere in the grey area of the
window and the second child disappears. Click again and only half of it
reappears (you may see the other half reappear briefly but be overwritten by
the first child).
The second child is correctly redrawn if you cover the window and expose it
again.
Under Windows, the same code results in the second window (being at the top of
the Z order) appearing intact on the second click.
This looks like one of those cases where there are probably a lot of wrong
ways to fix it and only one right way, and so needs to be fixed by somebody
familiar with the code involved.
--
Troy Rollo - wine at troy.rollo.name
-------------- next part --------------
A non-text attachment was scrubbed...
Name: drawtest.c
Type: text/x-csrc
Size: 2600 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-devel/attachments/20060824/7c7dde0e/drawtest-0001.c
More information about the wine-devel
mailing list