Alexandre Julliard : winex11: Don' t select for StructureNotify events on unmanaged windows.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Aug 20 07:42:45 CDT 2007


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Aug 20 14:23:10 2007 +0200

winex11: Don't select for StructureNotify events on unmanaged windows.

---

 dlls/winex11.drv/window.c |   31 ++++++++++++++++---------------
 1 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 1976c9b..a16d0cd 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -142,7 +142,15 @@ static int get_window_attributes( Display *display, struct x11drv_win_data *data
     attr->colormap          = X11DRV_PALETTE_PaletteXColormap;
     attr->save_under        = ((GetClassLongW( data->hwnd, GCL_STYLE ) & CS_SAVEBITS) != 0);
     attr->cursor            = x11drv_thread_data()->cursor;
-    return (CWOverrideRedirect | CWSaveUnder | CWColormap | CWCursor);
+    attr->bit_gravity       = NorthWestGravity;
+    attr->backing_store     = NotUseful;
+    attr->event_mask        = (ExposureMask | PointerMotionMask |
+                               ButtonPressMask | ButtonReleaseMask | EnterWindowMask |
+                               KeyPressMask | KeyReleaseMask | FocusChangeMask | KeymapStateMask);
+    if (data->managed) attr->event_mask |= StructureNotifyMask;
+
+    return (CWOverrideRedirect | CWSaveUnder | CWColormap | CWCursor |
+            CWEventMask | CWBitGravity | CWBackingStore);
 }
 
 
@@ -153,13 +161,15 @@ static int get_window_attributes( Display *display, struct x11drv_win_data *data
  */
 void X11DRV_sync_window_style( Display *display, struct x11drv_win_data *data )
 {
-    XSetWindowAttributes attr;
-    int mask = get_window_attributes( display, data, &attr );
+    if (data->whole_window != root_window)
+    {
+        XSetWindowAttributes attr;
+        int mask = get_window_attributes( display, data, &attr );
 
-    wine_tsx11_lock();
-    if (data->whole_window != DefaultRootWindow(display))
+        wine_tsx11_lock();
         XChangeWindowAttributes( display, data->whole_window, mask, &attr );
-    wine_tsx11_unlock();
+        wine_tsx11_unlock();
+    }
 }
 
 
@@ -774,15 +784,6 @@ static Window create_whole_window( Display *display, struct x11drv_win_data *dat
 
     mask = get_window_attributes( display, data, &attr );
 
-    /* set the attributes that don't change over the lifetime of the window */
-    attr.bit_gravity   = NorthWestGravity;
-    attr.backing_store = NotUseful;
-    attr.event_mask    = (ExposureMask | PointerMotionMask |
-                          ButtonPressMask | ButtonReleaseMask | EnterWindowMask |
-                          KeyPressMask | KeyReleaseMask | StructureNotifyMask |
-                          FocusChangeMask | KeymapStateMask);
-    mask |= CWBitGravity | CWBackingStore | CWEventMask;
-
     wine_tsx11_lock();
 
     data->whole_rect = rect;




More information about the wine-cvs mailing list