Alexandre Julliard : winex11: Handle Expose events on top-level client windows.
Alexandre Julliard
julliard at winehq.org
Wed Jan 23 16:40:18 CST 2013
Module: wine
Branch: master
Commit: 8373f8b6f65e5570a3bbaba2424b71634452a448
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8373f8b6f65e5570a3bbaba2424b71634452a448
Author: Alexandre Julliard <julliard at 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 );
More information about the wine-cvs
mailing list