summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2009-05-10 02:08:41 -0400
committerMatthias Clasen <mclasen@redhat.com>2009-05-11 12:14:04 -0400
commit52325ccd669ebd24de873bb0949d68d6dad17fb0 (patch)
tree7c4bed8084bb1f31ac2d74a0714c91679501fb77
parent5d8a4f78aba64aea32d3bad8a3a8a1e1fd2bf361 (diff)
downloadgdk-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.c10
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;
}
}