]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/gdkdnd-x11.c
Rename _gdk_send_xevent to _gdk_x11_display_send_xevent
[~andy/gtk] / gdk / x11 / gdkdnd-x11.c
index 1ebc08d0fc68d18c63f4396985fbdc3080661b71..50a1cb75f500cbb93249ebba74b3df41587c2026 100644 (file)
@@ -26,7 +26,7 @@
 
 #include "config.h"
 
-#include "gdkdnd.h"
+#include "gdkdndprivate.h"
 
 #include "gdkmain.h"
 #include "gdkx.h"
@@ -567,6 +567,7 @@ static void
 gdk_window_cache_destroy (GdkWindowCache *cache)
 {
   GdkWindow *root_window = gdk_screen_get_root_window (cache->screen);
+  GdkDisplay *display;
 
   XSelectInput (GDK_WINDOW_XDISPLAY (root_window),
                GDK_WINDOW_XID (root_window),
@@ -574,12 +575,11 @@ gdk_window_cache_destroy (GdkWindowCache *cache)
   gdk_window_remove_filter (root_window, gdk_window_cache_filter, cache);
   gdk_window_remove_filter (NULL, gdk_window_cache_shape_filter, cache);
 
-  gdk_error_trap_push ();
-
-  g_list_foreach (cache->children, (GFunc)free_cache_child,
-      gdk_screen_get_display (cache->screen));
+  display = gdk_screen_get_display (cache->screen);
 
-  gdk_error_trap_pop_ignored ();
+  gdk_x11_display_error_trap_push (display);
+  g_list_foreach (cache->children, (GFunc)free_cache_child, display);
+  gdk_x11_display_error_trap_pop_ignored (display);
 
   g_list_free (cache->children);
   g_hash_table_destroy (cache->child_hash);
@@ -605,11 +605,11 @@ is_pointer_within_shape (GdkDisplay    *display,
       GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);
       cairo_region_t *input_shape;
 
-      child->shape = _xwindow_get_shape (display_x11->xdisplay,
-                                         child->xid, ShapeBounding);
+      child->shape = _gdk_x11_xwindow_get_shape (display_x11->xdisplay,
+                                                 child->xid, ShapeBounding);
 #ifdef ShapeInput
-      input_shape = _xwindow_get_shape (display_x11->xdisplay,
-                                        child->xid, ShapeInput);
+      input_shape = _gdk_x11_xwindow_get_shape (display_x11->xdisplay,
+                                                child->xid, ShapeInput);
       if (child->shape && input_shape)
         {
           cairo_region_intersect (child->shape, input_shape);
@@ -682,7 +682,7 @@ get_client_window_at_coords_recurse (GdkDisplay *display,
     return None;
 }
 
-static Window 
+static Window
 get_client_window_at_coords (GdkWindowCache *cache,
                             Window          ignore,
                             gint            x_root,
@@ -690,9 +690,12 @@ get_client_window_at_coords (GdkWindowCache *cache,
 {
   GList *tmp_list;
   Window retval = None;
+  GdkDisplay *display;
+
+  display = gdk_screen_get_display (cache->screen);
+
+  gdk_x11_display_error_trap_push (display);
 
-  gdk_error_trap_push ();
-  
   tmp_list = cache->children;
 
   while (tmp_list && !retval)
@@ -704,8 +707,6 @@ get_client_window_at_coords (GdkWindowCache *cache,
           if ((x_root >= child->x) && (x_root < child->x + child->width) &&
               (y_root >= child->y) && (y_root < child->y + child->height))
             {
-              GdkDisplay *display = gdk_screen_get_display (cache->screen);
-
               if (!is_pointer_within_shape (display, child,
                                             x_root - child->x,
                                             y_root - child->y))
@@ -725,7 +726,7 @@ get_client_window_at_coords (GdkWindowCache *cache,
       tmp_list = tmp_list->next;
     }
 
-  gdk_error_trap_pop_ignored ();
+  gdk_x11_display_error_trap_pop_ignored (display);
   
   if (retval)
     return retval;
@@ -988,8 +989,8 @@ motif_find_drag_window (GdkDisplay *display,
        */
       if (display_x11->motif_drag_window)
        {
-         display_x11->motif_drag_gdk_window = 
-           gdk_window_foreign_new_for_display (display, display_x11->motif_drag_window);
+         display_x11->motif_drag_gdk_window =
+           gdk_x11_window_foreign_new_for_display (display, display_x11->motif_drag_window);
          gdk_window_add_filter (display_x11->motif_drag_gdk_window,
                                 motif_drag_window_filter,
                                 NULL);
@@ -1028,36 +1029,38 @@ motif_read_target_table (GdkDisplay *display)
       guchar *p;
       gboolean success = FALSE;
 
-      gdk_error_trap_push ();
-      XGetWindowProperty (display_x11->xdisplay, 
-                         display_x11->motif_drag_window, 
-                         motif_drag_targets_atom,
-                         0, (sizeof(MotifTargetTableHeader)+3)/4, FALSE,
-                         motif_drag_targets_atom, 
-                         &type, &format, &nitems, &bytes_after,
-                         &data);
+      gdk_x11_display_error_trap_push (display);
+      XGetWindowProperty (display_x11->xdisplay,
+                          display_x11->motif_drag_window,
+                          motif_drag_targets_atom,
+                          0, (sizeof(MotifTargetTableHeader)+3)/4, FALSE,
+                          motif_drag_targets_atom,
+                          &type, &format, &nitems, &bytes_after,
+                          &data);
 
-      if (gdk_error_trap_pop () || (format != 8) || (nitems < sizeof (MotifTargetTableHeader)))
-       goto error;
+      if (gdk_x11_display_error_trap_pop (display) ||
+          (format != 8) || (nitems < sizeof (MotifTargetTableHeader)))
+        goto error;
 
       header = (MotifTargetTableHeader *)data;
 
       header->n_lists = card16_to_host (header->n_lists, header->byte_order);
       header->total_size = card32_to_host (header->total_size, header->byte_order);
 
-      gdk_error_trap_push ();
-      XGetWindowProperty (display_x11->xdisplay, 
-                         display_x11->motif_drag_window, 
-                         motif_drag_targets_atom,
-                         (sizeof(MotifTargetTableHeader)+3)/4, 
-                         (header->total_size + 3)/4 - (sizeof(MotifTargetTableHeader) + 3)/4,
-                         FALSE,
-                         motif_drag_targets_atom, &type, &format, &nitems, 
-                         &bytes_after, &target_bytes);
-      
-      if (gdk_error_trap_pop () || (format != 8) || (bytes_after != 0) || 
-         (nitems != header->total_size - sizeof(MotifTargetTableHeader)))
-         goto error;
+      gdk_x11_display_error_trap_push (display);
+      XGetWindowProperty (display_x11->xdisplay,
+                          display_x11->motif_drag_window,
+                          motif_drag_targets_atom,
+                          (sizeof(MotifTargetTableHeader)+3)/4,
+                          (header->total_size + 3)/4 - (sizeof(MotifTargetTableHeader) + 3)/4,
+                          FALSE,
+                          motif_drag_targets_atom, &type, &format, &nitems,
+                          &bytes_after, &target_bytes);
+
+      if (gdk_x11_display_error_trap_pop (display) ||
+          (format != 8) || (bytes_after != 0) ||
+          (nitems != header->total_size - sizeof(MotifTargetTableHeader)))
+          goto error;
 
       display_x11->motif_n_target_lists = header->n_lists;
       display_x11->motif_target_lists = g_new0 (GList *, display_x11->motif_n_target_lists);
@@ -1067,7 +1070,7 @@ motif_read_target_table (GdkDisplay *display)
        {
          gint n_targets;
          guint32 *targets;
-         
+
          if (p + sizeof(guint16) - target_bytes > nitems)
            goto error;
 
@@ -1384,14 +1387,14 @@ motif_check_dest (GdkDisplay *display,
   unsigned long nitems, after;
   Atom motif_drag_receiver_info_atom = gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_RECEIVER_INFO");
 
-  gdk_error_trap_push ();
-  XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), win, 
-                     motif_drag_receiver_info_atom, 
-                     0, (sizeof(*info)+3)/4, False, AnyPropertyType,
-                     &type, &format, &nitems, &after, 
-                     &data);
+  gdk_x11_display_error_trap_push (display);
+  XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), win,
+                      motif_drag_receiver_info_atom,
+                      0, (sizeof(*info)+3)/4, False, AnyPropertyType,
+                      &type, &format, &nitems, &after,
+                      &data);
 
-  if (gdk_error_trap_pop() == 0)
+  if (gdk_x11_display_error_trap_pop (display) == 0)
     {
       if (type != None)
        {
@@ -1446,12 +1449,12 @@ motif_send_enter (GdkDragContextX11 *context_x11,
   MOTIF_XCLIENT_LONG (&xev, 3) = context_x11->motif_selection;
   MOTIF_XCLIENT_LONG (&xev, 4) = 0;
 
-  if (!_gdk_send_xevent (display,
-                        GDK_WINDOW_XID (context->dest_window),
-                        FALSE, 0, &xev))
-    GDK_NOTE (DND, 
-             g_message ("Send event to %lx failed",
-                        GDK_WINDOW_XID (context->dest_window)));
+  if (!_gdk_x11_display_send_xevent (display,
+                                     GDK_WINDOW_XID (context->dest_window),
+                                     FALSE, 0, &xev))
+    GDK_NOTE (DND,
+              g_message ("Send event to %lx failed",
+              GDK_WINDOW_XID (context->dest_window)));
 }
 
 static void
@@ -1475,12 +1478,12 @@ motif_send_leave (GdkDragContextX11 *context_x11,
   MOTIF_XCLIENT_LONG (&xev, 3) = 0;
   MOTIF_XCLIENT_LONG (&xev, 4) = 0;
 
-  if (!_gdk_send_xevent (display,
-                        GDK_WINDOW_XID (context->dest_window),
-                        FALSE, 0, &xev))
-    GDK_NOTE (DND, 
-             g_message ("Send event to %lx failed",
-                        GDK_WINDOW_XID (context->dest_window)));
+  if (!_gdk_x11_display_send_xevent (display,
+                                     GDK_WINDOW_XID (context->dest_window),
+                                     FALSE, 0, &xev))
+    GDK_NOTE (DND,
+              g_message ("Send event to %lx failed",
+                         GDK_WINDOW_XID (context->dest_window)));
 }
 
 static gboolean
@@ -1525,12 +1528,12 @@ motif_send_motion (GdkDragContextX11 *context_x11,
       retval = FALSE;
     }
 
-  if (!_gdk_send_xevent (display,
-                        GDK_WINDOW_XID (context->dest_window),
-                        FALSE, 0, &xev))
-    GDK_NOTE (DND, 
-             g_message ("Send event to %lx failed",
-                        GDK_WINDOW_XID (context->dest_window)));
+  if (!_gdk_x11_display_send_xevent (display,
+                                     GDK_WINDOW_XID (context->dest_window),
+                                     FALSE, 0, &xev))
+    GDK_NOTE (DND,
+              g_message ("Send event to %lx failed",
+                         GDK_WINDOW_XID (context->dest_window)));
 
   return retval;
 }
@@ -1559,12 +1562,12 @@ motif_send_drop (GdkDragContextX11 *context_x11,
   MOTIF_XCLIENT_LONG (&xev, 3)  = context_x11->motif_selection;
   MOTIF_XCLIENT_LONG (&xev, 4)  = GDK_WINDOW_XID (context->source_window);
 
-  if (!_gdk_send_xevent (display,
-                        GDK_WINDOW_XID (context->dest_window),
-                        FALSE, 0, &xev))
-    GDK_NOTE (DND, 
-             g_message ("Send event to %lx failed",
-                        GDK_WINDOW_XID (context->dest_window)));
+  if (!_gdk_x11_display_send_xevent (display,
+                                     GDK_WINDOW_XID (context->dest_window),
+                                     FALSE, 0, &xev))
+    GDK_NOTE (DND,
+              g_message ("Send event to %lx failed",
+                         GDK_WINDOW_XID (context->dest_window)));
 }
 
 /* Target Side */
@@ -1583,17 +1586,19 @@ motif_read_initiator_info (GdkDisplay *display,
   gulong bytes_after;
   guchar *data;
   MotifDragInitiatorInfo *initiator_info;
-  
+
   GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);
-  
-  gdk_error_trap_push ();
+
+  gdk_x11_display_error_trap_push (display);
   XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), source_window, atom,
-                     0, sizeof(*initiator_info), FALSE,
-                     gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_INITIATOR_INFO"),
-                     &type, &format, &nitems, &bytes_after,
-                     &data);
+                      0, sizeof(*initiator_info), FALSE,
+                      gdk_x11_get_xatom_by_name_for_display (display, "_MOTIF_DRAG_INITIATOR_INFO"),
+                      &type, &format, &nitems, &bytes_after,
+                      &data);
 
-  if (gdk_error_trap_pop () || (format != 8) || (nitems != sizeof (MotifDragInitiatorInfo)) || (bytes_after != 0))
+  if (gdk_x11_display_error_trap_pop (display) ||
+      (format != 8) || (nitems != sizeof (MotifDragInitiatorInfo)) ||
+      (bytes_after != 0))
     {
       g_warning ("Error reading initiator info\n");
       return FALSE;
@@ -1668,12 +1673,12 @@ motif_drag_context_new (GdkWindow *dest_window,
   context->protocol = GDK_DRAG_PROTO_MOTIF;
   context->is_source = FALSE;
 
-  context->source_window = gdk_window_lookup_for_display (display, source_window);
+  context->source_window = gdk_x11_window_lookup_for_display (display, source_window);
   if (context->source_window)
     g_object_ref (context->source_window);
   else
     {
-      context->source_window = gdk_window_foreign_new_for_display (display, source_window);
+      context->source_window = gdk_x11_window_foreign_new_for_display (display, source_window);
       if (!context->source_window)
        {
          g_object_unref (context_x11);
@@ -2533,13 +2538,12 @@ xdnd_check_dest (GdkDisplay *display,
 
   proxy = None;
 
-  gdk_error_trap_push ();
-  
+  gdk_x11_display_error_trap_push (display);
   if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), win,
-                         xdnd_proxy_atom, 0,
-                         1, False, AnyPropertyType,
-                         &type, &format, &nitems, &after,
-                         &data) == Success)
+                          xdnd_proxy_atom, 0,
+                          1, False, AnyPropertyType,
+                          &type, &format, &nitems, &after,
+                          &data) == Success)
     {
       if (type != None)
        {
@@ -2582,7 +2586,7 @@ xdnd_check_dest (GdkDisplay *display,
        }
     }
 
-  gdk_error_trap_pop_ignored ();
+  gdk_x11_display_error_trap_pop_ignored (display);
 
   return retval ? (proxy ? proxy : win) : None;
 }
@@ -2607,20 +2611,19 @@ xdnd_read_actions (GdkDragContextX11 *context_x11)
     {
       /* Get the XdndActionList, if set */
 
-      gdk_error_trap_push ();
-
+      gdk_x11_display_error_trap_push (display);
       if (XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display),
-                             GDK_WINDOW_XID (context->source_window),
-                             gdk_x11_get_xatom_by_name_for_display (display, "XdndActionList"),
-                             0, 65536,
-                             False, XA_ATOM, &type, &format, &nitems,
-                             &after, &data) == Success &&
-         type == XA_ATOM)
-       {
-         atoms = (Atom *)data;
-         
-         context->actions = 0;
-         
+                              GDK_WINDOW_XID (context->source_window),
+                              gdk_x11_get_xatom_by_name_for_display (display, "XdndActionList"),
+                              0, 65536,
+                              False, XA_ATOM, &type, &format, &nitems,
+                              &after, &data) == Success &&
+          type == XA_ATOM)
+        {
+          atoms = (Atom *)data;
+
+          context->actions = 0;
+
          for (i = 0; i < nitems; i++)
            context->actions |= xdnd_action_from_atom (display, atoms[i]);
          
@@ -2647,9 +2650,9 @@ xdnd_read_actions (GdkDragContextX11 *context_x11)
        }
 
       if (data)
-       XFree (data);
-      
-      gdk_error_trap_pop_ignored ();
+        XFree (data);
+
+      gdk_x11_display_error_trap_pop_ignored (display);
     }
   else
     {
@@ -2703,7 +2706,7 @@ xdnd_manage_source_filter (GdkDragContext *context,
   if (!GDK_WINDOW_DESTROYED (window) &&
       gdk_window_get_window_type (window) == GDK_WINDOW_FOREIGN)
     {
-      gdk_error_trap_push ();
+      gdk_x11_display_error_trap_push (GDK_WINDOW_DISPLAY (window));
 
       if (add_filter)
        {
@@ -2723,7 +2726,7 @@ xdnd_manage_source_filter (GdkDragContext *context,
           */
        }
       
-      gdk_error_trap_pop_ignored ();
+      gdk_x11_display_error_trap_pop_ignored (GDK_WINDOW_DISPLAY (window));
     }
 }
 
@@ -2843,12 +2846,12 @@ xdnd_enter_filter (GdkXEvent *xev,
   device_manager = gdk_display_get_device_manager (display);
   gdk_drag_context_set_device (context, gdk_device_manager_get_client_pointer (device_manager));
 
-  context->source_window = gdk_window_lookup_for_display (display, source_window);
+  context->source_window = gdk_x11_window_lookup_for_display (display, source_window);
   if (context->source_window)
     g_object_ref (context->source_window);
   else
     {
-      context->source_window = gdk_window_foreign_new_for_display (display, source_window);
+      context->source_window = gdk_x11_window_foreign_new_for_display (display, source_window);
       if (!context->source_window)
        {
          g_object_unref (context);
@@ -2861,7 +2864,7 @@ xdnd_enter_filter (GdkXEvent *xev,
   context->targets = NULL;
   if (get_types)
     {
-      gdk_error_trap_push ();
+      gdk_x11_display_error_trap_push (display);
       XGetWindowProperty (GDK_WINDOW_XDISPLAY (event->any.window), 
                          source_window, 
                          gdk_x11_get_xatom_by_name_for_display (display, "XdndTypeList"),
@@ -2869,7 +2872,7 @@ xdnd_enter_filter (GdkXEvent *xev,
                          False, XA_ATOM, &type, &format, &nitems,
                          &after, &data);
 
-      if (gdk_error_trap_pop () || (format != 32) || (type != XA_ATOM))
+      if (gdk_x11_display_error_trap_pop (display) || (format != 32) || (type != XA_ATOM))
        {
          g_object_unref (context);
 
@@ -3074,7 +3077,7 @@ xdnd_drop_filter (GdkXEvent *xev,
  ************************** Public API ***********************
  *************************************************************/
 void
-_gdk_dnd_init (GdkDisplay *display)
+_gdk_x11_dnd_init (GdkDisplay *display)
 {
   int i;
   init_byte_order ();
@@ -3091,7 +3094,7 @@ _gdk_dnd_init (GdkDisplay *display)
        gdk_atom_intern_static_string (xdnd_filters[i].atom_name),
        xdnd_filters[i].func, NULL);
     }
-}                    
+}
 
 /* Source side */
 
@@ -3158,7 +3161,7 @@ _gdk_x11_display_get_drag_protocol (GdkDisplay      *display,
   base_precache_atoms (display);
 
   /* Check for a local drag */
-  window = gdk_window_lookup_for_display (display, xid);
+  window = gdk_x11_window_lookup_for_display (display, xid);
   if (window && gdk_window_get_window_type (window) != GDK_WINDOW_FOREIGN)
     {
       if (g_object_get_data (G_OBJECT (window), "gdk-dnd-registered") != NULL)
@@ -3273,11 +3276,11 @@ gdk_drag_context_x11_find_window (GdkDragContext  *context,
 
       if (recipient != None)
         {
-          dest_window = gdk_window_lookup_for_display (display, recipient);
+          dest_window = gdk_x11_window_lookup_for_display (display, recipient);
           if (dest_window)
             g_object_ref (dest_window);
           else
-            dest_window = gdk_window_foreign_new_for_display (display, recipient);
+            dest_window = gdk_x11_window_foreign_new_for_display (display, recipient);
         }
       else
         dest_window = NULL;
@@ -3610,12 +3613,12 @@ gdk_drag_context_x11_drag_status (GdkDragContext *context,
       MOTIF_XCLIENT_LONG (&xev, 3) = 0;
       MOTIF_XCLIENT_LONG (&xev, 4) = 0;
 
-      if (!_gdk_send_xevent (display,
-                            GDK_WINDOW_XID (context->source_window),
-                            FALSE, 0, &xev))
-       GDK_NOTE (DND, 
-                 g_message ("Send event to %lx failed",
-                            GDK_WINDOW_XID (context->source_window)));
+      if (!_gdk_x11_display_send_xevent (display,
+                                         GDK_WINDOW_XID (context->source_window),
+                                         FALSE, 0, &xev))
+        GDK_NOTE (DND,
+                  g_message ("Send event to %lx failed",
+                             GDK_WINDOW_XID (context->source_window)));
     }
   else if (context->protocol == GDK_DRAG_PROTO_XDND)
     {
@@ -3628,6 +3631,7 @@ gdk_drag_context_x11_drag_status (GdkDragContext *context,
       xev.xclient.data.l[1] = (action != 0) ? (2 | 1) : 0;
       xev.xclient.data.l[2] = 0;
       xev.xclient.data.l[3] = 0;
+      xev.xclient.data.l[4] = 0;
       if (!xdnd_send_xevent (context_x11, context->source_window, FALSE, &xev))
         GDK_NOTE (DND,
                   g_message ("Send event to %lx failed",
@@ -3672,9 +3676,9 @@ gdk_drag_context_x11_drop_reply (GdkDragContext *context,
       MOTIF_XCLIENT_LONG (&xev, 3) = 0;
       MOTIF_XCLIENT_LONG (&xev, 4) = 0;
 
-      _gdk_send_xevent (display,
-                       GDK_WINDOW_XID (context->source_window),
-                       FALSE, 0, &xev);
+      _gdk_x11_display_send_xevent (display,
+                                    GDK_WINDOW_XID (context->source_window),
+                                    FALSE, 0, &xev);
     }
 }