Clip children/siblings patch.

Rein Klazes rklazes at xs4all.nl
Mon Nov 24 12:57:53 CST 2003


Hi,

Another fix for Agent 2.0 beta.

Some buttons on Agent's preference dialogs did not display. Found that
it is caused by the buttons having a WS_CLIPSIBLINGS style and therefore
were clipped by a group with a WS_EX_TRANSPARENT ex-style. Testing shows
that windows excludes child windows with this ex-style from the
CLIPSIBLINGS clipping and also if their parents have WS_CLIPCHILDREN
style.

Changelog:
	dlls/x11drv	: winpos.c
	In clip_children() don't clip the visible region by children
	that have a WS_EX_TRANSPARENT style.

Rein.
-- 
Rein Klazes
rklazes at xs4all.nl
-------------- next part --------------
--- wine/dlls/x11drv/winpos.c	2003-11-22 19:26:02.000000000 +0100
+++ mywine/dlls/x11drv/winpos.c	2003-11-24 19:34:47.000000000 +0100
@@ -87,7 +87,8 @@
     /* first check if we have anything to do */
     if (!(list = WIN_ListChildren( parent ))) return ret;
     for (i = 0; list[i] && list[i] != last; i++)
-        if (GetWindowLongW( list[i], GWL_STYLE ) & WS_VISIBLE) break;
+        if ((GetWindowLongW( list[i], GWL_STYLE ) & WS_VISIBLE) &&
+                !(GetWindowLongW( list[i], GWL_EXSTYLE ) & WS_EX_TRANSPARENT)) break;
     if (!list[i] || list[i] == last) goto done; /* no children to clip */
 
     if (whole_window)
@@ -104,7 +105,7 @@
     for ( ; list[i] && list[i] != last; i++)
     {
         if (!(ptr = WIN_FindWndPtr( list[i] ))) continue;
-        if (ptr->dwStyle & WS_VISIBLE)
+        if ((ptr->dwStyle & WS_VISIBLE) && !(ptr->dwExStyle & WS_EX_TRANSPARENT))
         {
             SetRectRgn( rectRgn, ptr->rectWindow.left + x, ptr->rectWindow.top + y,
                         ptr->rectWindow.right + x, ptr->rectWindow.bottom + y );


More information about the wine-patches mailing list