]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/gdkevents-x11.c
Merge branch 'master' into client-side-windows
[~andy/gtk] / gdk / x11 / gdkevents-x11.c
index 4f02dc2cbdb6d9d55073e72675b29ad85e195d6e..8d3141a8ee2b79b0b0c96942d24e7b9be8cb80fb 100644 (file)
@@ -902,9 +902,6 @@ gdk_event_translate (GdkDisplay *display,
   GdkToplevelX11 *toplevel = NULL;
   GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);
   Window xwindow, filter_xwindow;
-  int exposure_x_offset = 0;
-  int exposure_y_offset = 0;
-  GdkWindow *unref_pixmap = NULL;
   
   return_val = FALSE;
 
@@ -932,31 +929,13 @@ gdk_event_translate (GdkDisplay *display,
    * are reported same as structure events
    */
   get_real_window (display, xevent, &xwindow, &filter_xwindow);
-
-  window = gdk_window_lookup_for_display (display, xwindow);
   
+  window = gdk_window_lookup_for_display (display, xwindow);
   /* We may receive events such as NoExpose/GraphicsExpose
    * and ShmCompletion for pixmaps
    */
   if (window && !GDK_IS_WINDOW (window))
-    {
-      GdkPixmapObject *pixmap = (GdkPixmapObject *)window;
-      if ((xevent->type == GraphicsExpose ||
-          xevent->type == NoExpose) &&
-         GDK_IS_PIXMAP (window) &&
-         pixmap->backing_for != NULL)
-       {
-         /* Unref the pixmap once for each finished set of GraphicsExposes */
-         if (xevent->type == NoExpose ||
-             xevent->xgraphicsexpose.count == 0)
-           unref_pixmap = window;
-         window = g_object_ref (pixmap->backing_for);
-         exposure_x_offset = pixmap->backing_x_offset;
-         exposure_y_offset = pixmap->backing_x_offset;
-       }
-      else
-       window = NULL;
-    }
+    window = NULL;
   window_private = (GdkWindowObject *) window;
 
   /* We always run the filters for the window where the event
@@ -984,18 +963,18 @@ gdk_event_translate (GdkDisplay *display,
       if (/* Is key event */
          (xevent->type == KeyPress || xevent->type == KeyRelease) &&
          /* And we have a grab */
-         display_x11->keyboard_xgrab_window != NULL &&
+         display->keyboard_grab.window != NULL &&
          (
           /* The window is not a descendant of the grabbed window */
-          !is_parent_of ((GdkWindow *)display_x11->keyboard_xgrab_window, window) ||
+          !is_parent_of ((GdkWindow *)display->keyboard_grab.window, window) ||
           /* Or owner event is false */
-          !display_x11->keyboard_xgrab_owner_events
+          !display->keyboard_grab.owner_events
           )
          )
         {
          /* Report key event against grab window */
-          window_private = display_x11->keyboard_xgrab_window;
-          window = (GdkWindow *) window_private;
+          window = display->keyboard_grab.window;;
+          window_private = (GdkWindowObject *) window;
         }
 
       window_impl = GDK_WINDOW_IMPL_X11 (window_private->impl);
@@ -1213,7 +1192,6 @@ gdk_event_translate (GdkDisplay *display,
 
       set_user_time (window, event);
 
-      _gdk_xgrab_check_button_event (window, xevent);
       break;
       
     case ButtonRelease:
@@ -1236,7 +1214,7 @@ gdk_event_translate (GdkDisplay *display,
           xevent->xbutton.button == 6 || xevent->xbutton.button ==7)
        {
          return_val = FALSE;
-         goto release_out;
+         break;
        }
 
       event->button.type = GDK_BUTTON_RELEASE;
@@ -1252,13 +1230,8 @@ gdk_event_translate (GdkDisplay *display,
       event->button.device = display->core_pointer;
 
       if (!set_screen_from_root (display, event, xevent->xbutton.root))
-       {
-         return_val = FALSE;
-         goto release_out;
-       }
+       return_val = FALSE;
       
-    release_out:
-      _gdk_xgrab_check_button_event (window, xevent);
       break;
       
     case MotionNotify:
@@ -1681,8 +1654,8 @@ gdk_event_translate (GdkDisplay *display,
             break;
           }
         
-       expose_rect.x = xevent->xgraphicsexpose.x + exposure_x_offset;
-       expose_rect.y = xevent->xgraphicsexpose.y + exposure_y_offset;
+       expose_rect.x = xevent->xgraphicsexpose.x;
+       expose_rect.y = xevent->xgraphicsexpose.y;
        expose_rect.width = xevent->xgraphicsexpose.width;
        expose_rect.height = xevent->xgraphicsexpose.height;
            
@@ -1892,7 +1865,7 @@ gdk_event_translate (GdkDisplay *display,
        }
 #endif
 
-    if (!window ||
+      if (!window ||
          xevent->xconfigure.event != xevent->xconfigure.window ||
           GDK_WINDOW_TYPE (window) == GDK_WINDOW_CHILD ||
           GDK_WINDOW_TYPE (window) == GDK_WINDOW_ROOT)
@@ -2031,7 +2004,10 @@ gdk_event_translate (GdkDisplay *display,
       event->selection.window = window;
       event->selection.selection = gdk_x11_xatom_to_atom_for_display (display, xevent->xselection.selection);
       event->selection.target = gdk_x11_xatom_to_atom_for_display (display, xevent->xselection.target);
-      event->selection.property = gdk_x11_xatom_to_atom_for_display (display, xevent->xselection.property);
+      if (xevent->xselection.property == None)
+        event->selection.property = GDK_NONE;
+      else
+        event->selection.property = gdk_x11_xatom_to_atom_for_display (display, xevent->xselection.property);
       event->selection.time = xevent->xselection.time;
       
       break;
@@ -2224,9 +2200,6 @@ gdk_event_translate (GdkDisplay *display,
   if (window)
     g_object_unref (window);
 
-  if (unref_pixmap)
-    g_object_unref (unref_pixmap);
-  
   return return_val;
 }
 
@@ -2347,7 +2320,7 @@ _gdk_events_queue (GdkDisplay *display)
       if (gdk_event_translate (display, event, &xevent, FALSE))
        {
          ((GdkEventPrivate *)event)->flags &= ~GDK_EVENT_PENDING;
-          _gdk_windowing_got_event (display, node, event);
+          _gdk_windowing_got_event (display, node, event, xevent.xany.serial);
        }
       else
        {