diff options
author | Matthias Clasen <mclasen@redhat.com> | 2009-05-10 02:08:41 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2009-05-11 12:14:04 -0400 |
commit | 52325ccd669ebd24de873bb0949d68d6dad17fb0 (patch) | |
tree | 7c4bed8084bb1f31ac2d74a0714c91679501fb77 | |
parent | 5d8a4f78aba64aea32d3bad8a3a8a1e1fd2bf361 (diff) | |
download | gdk-pixbuf-52325ccd669ebd24de873bb0949d68d6dad17fb0.tar.gz |
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.
-rw-r--r-- | gdk/x11/gdkwindow-x11.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c index 82966743c..77033fea7 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; } } |