Alexandre Julliard : winex11: Always paint to the whole window.

Alexandre Julliard julliard at winehq.org
Thu Aug 30 14:34:33 CDT 2012


Module: wine
Branch: master
Commit: 044f790bcb46161bc91d16c75e7260d339e0919c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=044f790bcb46161bc91d16c75e7260d339e0919c

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Aug 30 14:40:31 2012 +0200

winex11: Always paint to the whole window.

---

 dlls/winex11.drv/window.c |   14 ++++++--------
 server/window.c           |    2 +-
 2 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 7e886dd..52c18cf 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -2218,10 +2218,7 @@ void CDECL X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect,
         {
             escape.drawable = data->icon_window;
         }
-        else if (flags & DCX_WINDOW)
-            escape.drawable = data ? data->whole_window : X11DRV_get_whole_window( hwnd );
-        else
-            escape.drawable = escape.gl_drawable;
+        else escape.drawable = data ? data->whole_window : X11DRV_get_whole_window( hwnd );
 
         if (escape.gl_drawable) escape.gl_type = DC_GL_WINDOW;
         /* special case: when repainting the root window, clip out top-level windows */
@@ -2231,21 +2228,22 @@ void CDECL X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect,
     {
         /* find the first ancestor that has a drawable */
         for (parent = hwnd; parent && parent != top; parent = GetAncestor( parent, GA_PARENT ))
-            if ((escape.drawable = X11DRV_get_client_window( parent ))) break;
+            if ((escape.drawable = X11DRV_get_whole_window( parent ))) break;
 
         if (escape.drawable)
         {
             POINT pt = { 0, 0 };
-            MapWindowPoints( top, parent, &pt, 1 );
+            MapWindowPoints( 0, parent, &pt, 1 );
+            escape.dc_rect = *win_rect;
             OffsetRect( &escape.dc_rect, pt.x, pt.y );
+            if (flags & DCX_CLIPCHILDREN) escape.mode = ClipByChildren;
         }
-        else escape.drawable = X11DRV_get_client_window( top );
+        else escape.drawable = X11DRV_get_whole_window( top );
 
         escape.fbconfig_id = data ? data->fbconfig_id : (XID)GetPropA( hwnd, fbconfig_id_prop );
         escape.gl_drawable = data ? data->gl_drawable : (Drawable)GetPropA( hwnd, gl_drawable_prop );
         escape.pixmap      = data ? data->pixmap : (Pixmap)GetPropA( hwnd, pixmap_prop );
         if (escape.gl_drawable) escape.gl_type = escape.pixmap ? DC_GL_PIXMAP_WIN : DC_GL_CHILD_WIN;
-        if (flags & DCX_CLIPCHILDREN) escape.mode = ClipByChildren;
     }
 
     ExtEscape( hdc, X11DRV_ESCAPE, sizeof(escape), (LPSTR)&escape, 0, NULL );
diff --git a/server/window.c b/server/window.c
index cc4b07b..fefe1ac 100644
--- a/server/window.c
+++ b/server/window.c
@@ -2311,7 +2311,7 @@ DECL_HANDLER(get_visible_region)
         if (data) set_reply_data_ptr( data, reply->total_size );
     }
     reply->top_win  = top->handle;
-    reply->top_rect = (top == win && (req->flags & DCX_WINDOW)) ? top->visible_rect : top->client_rect;
+    reply->top_rect = top->visible_rect;
 
     if (!is_desktop_window(win))
     {




More information about the wine-cvs mailing list