[gtk+/events-refactor: 333/1085] Make the device manager select for events on GdkWindow initialization.



commit c951dc0255143c1270f3cf0fd9a2f52950b3f139
Author: Carlos Garnacho <carlosg gnome org>
Date:   Sun Jun 14 19:11:11 2009 +0200

    Make the device manager select for events on GdkWindow initialization.

 gdk/x11/gdkwindow-x11.c |   14 +++++++++++---
 1 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index bfaa7a1..6a888d4 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -665,7 +665,8 @@ _gdk_window_new (GdkWindow     *parent,
   GdkDrawableImplX11 *draw_impl;
   GdkScreenX11 *screen_x11;
   GdkScreen *screen;
-  
+  GdkDisplay *display;
+  GdkDeviceManager *device_manager;
   GdkVisual *visual;
   Window xparent;
   Visual *xvisual;
@@ -689,10 +690,14 @@ _gdk_window_new (GdkWindow     *parent,
 		g_warning ("gdk_window_new(): no parent specified reverting to parent = default root window"));
       
       screen = gdk_screen_get_default ();
+      display = gdk_screen_get_display (screen);
       parent = gdk_screen_get_root_window (screen);
     }
   else
-    screen = gdk_drawable_get_screen (parent);
+    {
+      screen = gdk_drawable_get_screen (parent);
+      display = GDK_WINDOW_DISPLAY (parent);
+    }
 
   screen_x11 = GDK_SCREEN_X11 (screen);
 
@@ -762,7 +767,7 @@ _gdk_window_new (GdkWindow     *parent,
    */
   if (attributes->wclass == GDK_INPUT_ONLY &&
       GDK_WINDOW_TYPE (parent) == GDK_WINDOW_ROOT &&
-      !G_LIKELY (GDK_DISPLAY_X11 (GDK_WINDOW_DISPLAY (parent))->trusted_client))
+      !G_LIKELY (GDK_DISPLAY_X11 (display)->trusted_client))
     {
       g_warning ("Coercing GDK_INPUT_ONLY toplevel window to GDK_INPUT_OUTPUT to work around bug in Xorg server");
       attributes->wclass = GDK_INPUT_OUTPUT;
@@ -947,6 +952,9 @@ _gdk_window_new (GdkWindow     *parent,
   if (attributes_mask & GDK_WA_TYPE_HINT)
     gdk_window_set_type_hint (window, attributes->type_hint);
 
+  device_manager = gdk_device_manager_get_for_display (display);
+  gdk_device_manager_set_window_events (device_manager, window, attributes->event_mask);
+
   return window;
 }
 



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