[2/5] winex11.drv: Fix wait_for_withdrawn_state on the desktop window.

Vincent Povirk madewokherd at gmail.com
Tue Feb 18 17:02:08 CST 2014


I guess we never had to do this for a desktop window before. Also,
StructureNotifyMask (which I think we need for
wait_for_withdrawn_state to work correctly) means we get
ConfigureNotify events on the desktop window, which cause other
problems. Someday it might be nice to translate those ConfigureNotify
events to screen resizes.
-------------- next part --------------
From 15ce7dad0d719ce3a7979512944899e844af3a81 Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Tue, 18 Feb 2014 15:19:09 -0600
Subject: [PATCH 2/6] winex11.drv: Fix wait_for_withdrawn_state on the desktop
 window.

---
 dlls/winex11.drv/desktop.c | 3 ++-
 dlls/winex11.drv/event.c   | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/dlls/winex11.drv/desktop.c b/dlls/winex11.drv/desktop.c
index 603e19f..292c6b4 100644
--- a/dlls/winex11.drv/desktop.c
+++ b/dlls/winex11.drv/desktop.c
@@ -149,7 +149,8 @@ BOOL CDECL X11DRV_create_desktop( UINT width, UINT height )
 
     /* Create window */
     win_attr.event_mask = ExposureMask | KeyPressMask | KeyReleaseMask | EnterWindowMask |
-                          PointerMotionMask | ButtonPressMask | ButtonReleaseMask | FocusChangeMask;
+                          PointerMotionMask | ButtonPressMask | ButtonReleaseMask |
+                          FocusChangeMask | StructureNotifyMask | PropertyChangeMask;
     win_attr.cursor = XCreateFontCursor( display, XC_top_left_arrow );
 
     if (default_visual.visual != DefaultVisual( display, DefaultScreen(display) ))
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index ea24471..f8d4f18 100644
--- a/dlls/winex11.drv/event.c
+++ b/dlls/winex11.drv/event.c
@@ -1065,6 +1065,7 @@ void X11DRV_ConfigureNotify( HWND hwnd, XEvent *xev )
     if (!hwnd) return;
     if (!(data = get_win_data( hwnd ))) return;
     if (!data->mapped || data->iconic) goto done;
+    if (root_window && root_window == data->whole_window) goto done;
     if (data->whole_window && !data->managed) goto done;
     /* ignore synthetic events on foreign windows */
     if (event->send_event && !data->whole_window) goto done;
-- 
1.8.3.2



More information about the wine-patches mailing list