Commit bf5470c0 authored by Alexandre Julliard's avatar Alexandre Julliard

We still need to look for the top parent that doesn't clip siblings in

GetDC because of the X window clipping.
parent 642180d3
...@@ -416,21 +416,36 @@ BOOL X11DRV_GetDC( HWND hwnd, HDC hdc, HRGN hrgn, DWORD flags ) ...@@ -416,21 +416,36 @@ BOOL X11DRV_GetDC( HWND hwnd, HDC hdc, HRGN hrgn, DWORD flags )
if (top != hwnd) if (top != hwnd)
{ {
escape.drawable_org.x = escape.drawable_org.y = 0; /* find the top most parent that doesn't clip siblings */
if (flags & (DCX_WINDOW|DCX_PARENTCLIP)) HWND clipping_parent = 0;
HWND *list = WIN_ListParents( hwnd );
if (list)
{ {
escape.org.x = win->rectWindow.left - win->rectClient.left; int i;
escape.org.y = win->rectWindow.top - win->rectClient.top; for (i = 0; list[i] != top; i++)
MapWindowPoints( hwnd, top, &escape.org, 1 ); {
MapWindowPoints( top, 0, &escape.drawable_org, 1 ); LONG style = GetWindowLongW( list[i], GWL_STYLE );
escape.drawable = X11DRV_get_client_window( top ); if (!(style & WS_CLIPSIBLINGS)) clipping_parent = list[i];
}
HeapFree( GetProcessHeap(), 0, list );
} }
if (clipping_parent)
clipping_parent = GetAncestor( clipping_parent, GA_PARENT );
else if (!(flags & DCX_CLIPSIBLINGS) || (flags & DCX_WINDOW))
clipping_parent = GetAncestor( hwnd, GA_PARENT );
else else
clipping_parent = hwnd;
escape.org.x = escape.org.y = 0;
escape.drawable_org.x = escape.drawable_org.y = 0;
if (flags & DCX_WINDOW)
{ {
escape.org.x = escape.org.y = 0; escape.org.x = win->rectWindow.left - win->rectClient.left;
MapWindowPoints( hwnd, 0, &escape.drawable_org, 1 ); escape.org.y = win->rectWindow.top - win->rectClient.top;
escape.drawable = X11DRV_get_client_window( hwnd );
} }
MapWindowPoints( hwnd, clipping_parent, &escape.org, 1 );
MapWindowPoints( clipping_parent, 0, &escape.drawable_org, 1 );
escape.drawable = X11DRV_get_client_window( clipping_parent );
} }
else else
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment