[gtk+] Avoid unintended side-effect in gdk_window_get_events



commit 141ddd99f375b8f687f5f83164c440c8a79b1364
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun May 10 02:08:41 2009 -0400

    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 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 8296674..77033fe 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;
     }
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]