From 141ddd99f375b8f687f5f83164c440c8a79b1364 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 10 May 2009 02:08:41 -0400 Subject: [PATCH] Avoid unintended side-effect in gdk_window_get_events Calling gdk_window_get_events() had the side-effect of letting property change notification through to the application, which was not intended. Now we keep StructureNotify and PropertyNotify filtered out when they were before. Reported in bug 582003. --- gdk/x11/gdkwindow-x11.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 82966743c9..77033fea76 100644 --- a/gdk/x11/gdkwindow-x11.c +++ b/gdk/x11/gdkwindow-x11.c @@ -3538,18 +3538,20 @@ gdk_window_x11_get_events (GdkWindow *window) { XWindowAttributes attrs; GdkEventMask event_mask; + GdkEventMask filtered; if (GDK_WINDOW_DESTROYED (window)) return 0; else { XGetWindowAttributes (GDK_WINDOW_XDISPLAY (window), - GDK_WINDOW_XID (window), + GDK_WINDOW_XID (window), &attrs); - event_mask = x_event_mask_to_gdk_event_mask (attrs.your_event_mask); - GDK_WINDOW_OBJECT (window)->event_mask = event_mask; - + /* if property change was filtered out before, keep it filtered out */ + filtered = GDK_STRUCTURE_MASK | GDK_PROPERTY_CHANGE_MASK; + GDK_WINDOW_OBJECT (window)->event_mask = event_mask & ((GDK_WINDOW_OBJECT (window)->event_mask & filtered) | ~filtered); + return event_mask; } }