]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkdnd-quartz.c
Merge libgdk and libgtk
[~andy/gtk] / gtk / gtkdnd-quartz.c
index 74964d00e160517f91864ab028ffe170c8144fd9..858f9c2d34392b4d5cd23c427c69ca9c0e5a999c 100644 (file)
@@ -29,9 +29,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "gdkconfig.h"
-
-#include "gdk/gdkkeysyms.h"
+#include "gdk/gdk.h"
 
 #include "gtkdnd.h"
 #include "gtkiconfactory.h"
@@ -1080,6 +1078,9 @@ gtk_drag_begin_idle (gpointer arg)
 
   drag_image = _gtk_quartz_create_image_from_pixbuf (info->icon_pixbuf);
 
+  point.x -= info->hot_x;
+  point.y -= info->hot_y;
+
   [nswindow dragImage:drag_image
                    at:point
                offset:NSMakeSize(0, 0)
@@ -1563,8 +1564,8 @@ set_icon_stock_pixbuf (GdkDragContext    *context,
 
   if (stock_id)
     {
-      pixbuf = gtk_widget_render_icon (info->widget, stock_id,
-                                      GTK_ICON_SIZE_DND, NULL);
+      pixbuf = gtk_widget_render_icon_pixbuf (info->widget, stock_id,
+                                             GTK_ICON_SIZE_DND, NULL);
 
       if (!pixbuf)
        {
@@ -1688,17 +1689,19 @@ gtk_drag_set_icon_surface (GdkDragContext  *context,
 {
   GdkPixbuf *pixbuf;
   GdkRectangle extents;
+  double x_offset, y_offset;
 
   g_return_if_fail (GDK_IS_DRAG_CONTEXT (context));
   g_return_if_fail (context->is_source);
   g_return_if_fail (surface != NULL);
 
   _gtk_cairo_surface_extents (surface, &extents);
+  cairo_surface_get_device_offset (surface, &x_offset, &y_offset);
 
   pixbuf = gdk_pixbuf_get_from_surface (surface,
                                         extents.x, extents.y,
                                         extents.width, extents.height);
-  gtk_drag_set_icon_pixbuf (context, pixbuf, 0, 0);
+  gtk_drag_set_icon_pixbuf (context, pixbuf, -x_offset, -y_offset);
   g_object_unref (pixbuf);
 }