From: Rémi Bernon rbernon@codeweavers.com
--- dlls/winex11.drv/window.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index b13c54531ac..470f202a84f 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -2695,6 +2695,7 @@ void X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect, const RECT *top_rect, DWORD flags ) { struct x11drv_escape_set_drawable escape; + struct x11drv_win_data *data;
escape.code = X11DRV_SET_DRAWABLE; escape.mode = IncludeInferiors; @@ -2705,14 +2706,11 @@ void X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect, escape.dc_rect.right = win_rect->right - top_rect->left; escape.dc_rect.bottom = win_rect->bottom - top_rect->top;
- if (top == hwnd) + if ((data = get_win_data( top ))) { - struct x11drv_win_data *data = get_win_data( hwnd ); - - escape.drawable = data ? data->whole_window : X11DRV_get_whole_window( hwnd ); - + escape.drawable = data->whole_window; /* special case: when repainting the root window, clip out top-level windows */ - if (data && data->whole_window == root_window) escape.mode = ClipByChildren; + if (top == hwnd && data->whole_window == root_window) escape.mode = ClipByChildren; release_win_data( data ); } else