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.