Module: wine Branch: master Commit: 8373f8b6f65e5570a3bbaba2424b71634452a448 URL: http://source.winehq.org/git/wine.git/?a=commit;h=8373f8b6f65e5570a3bbaba242...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Jan 23 19:09:29 2013 +0100
winex11: Handle Expose events on top-level client windows.
---
dlls/winex11.drv/event.c | 23 +++++++++++++---------- dlls/winex11.drv/window.c | 5 +++-- 2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 90b2068..5e5b19e 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -829,21 +829,24 @@ static void X11DRV_Expose( HWND hwnd, XEvent *xev ) rect.right = event->x + event->width; rect.bottom = event->y + event->height;
- if (data->surface) + if (event->window != data->client_window) { - surface_region = expose_surface( data->surface, &rect ); - if (!surface_region) flags = 0; - if (data->vis.visualid != default_visual.visualid) - data->surface->funcs->flush( data->surface ); - } + if (data->surface) + { + surface_region = expose_surface( data->surface, &rect ); + if (!surface_region) flags = 0; + else OffsetRgn( surface_region, data->whole_rect.left - data->client_rect.left, + data->whole_rect.top - data->client_rect.top );
- if (event->window != root_window) - { + if (data->vis.visualid != default_visual.visualid) + data->surface->funcs->flush( data->surface ); + } OffsetRect( &rect, data->whole_rect.left - data->client_rect.left, data->whole_rect.top - data->client_rect.top ); - if (surface_region) OffsetRgn( surface_region, data->whole_rect.left - data->client_rect.left, - data->whole_rect.top - data->client_rect.top ); + }
+ if (event->window != root_window) + { if (GetWindowLongW( data->hwnd, GWL_EXSTYLE ) & WS_EX_LAYOUTRTL) mirror_rect( &data->client_rect, &rect );
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index d45e9a1..7f97330 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -1383,11 +1383,12 @@ Window create_client_window( struct x11drv_win_data *data, const XVisualInfo *vi attr.bit_gravity = NorthWestGravity; attr.win_gravity = NorthWestGravity; attr.backing_store = NotUseful; + attr.event_mask = ExposureMask;
data->client_window = XCreateWindow( data->display, data->whole_window, x, y, cx, cy, 0, default_visual.depth, InputOutput, visual->visual, - CWBitGravity | CWWinGravity | CWBackingStore | CWColormap, - &attr ); + CWBitGravity | CWWinGravity | CWBackingStore | + CWColormap | CWEventMask, &attr ); if (!data->client_window) return 0;
XSaveContext( data->display, data->client_window, winContext, (char *)data->hwnd );