/* Forward declarations */
static GtkWidget *gtk_drop_find_widget (GtkWidget *widget,
- GdkDrop *drop,
- gint x,
- gint y,
+ GdkEvent *event,
GtkDragDestCallback callback);
static void gtk_drag_dest_leave (GtkWidget *widget,
GdkDrop *drop);
case GDK_DRAG_MOTION:
case GDK_DROP_START:
{
- double x, y;
GtkWidget *widget;
if (event_type == GDK_DROP_START)
}
}
- gdk_event_get_coords (event, &x, &y);
-
widget = gtk_drop_find_widget (toplevel,
- drop,
- x,
- y,
+ event,
(event_type == GDK_DRAG_MOTION) ?
gtk_drag_dest_motion :
gtk_drag_dest_drop);
static GtkWidget *
gtk_drop_find_widget (GtkWidget *event_widget,
- GdkDrop *drop,
- gint x,
- gint y,
+ GdkEvent *event,
GtkDragDestCallback callback)
{
GtkWidget *widget;
+ double ex, ey;
+ int x, y;
+ GdkDrop *drop;
if (!gtk_widget_get_mapped (event_widget) ||
!gtk_widget_get_sensitive (event_widget))
return NULL;
- widget = gtk_widget_pick (event_widget, x, y, GTK_PICK_DEFAULT);
+ gdk_event_get_coords (event, &ex, &ey);
+ drop = gdk_event_get_drop (event);
+
+ widget = gtk_widget_pick (event_widget, ex, ey, GTK_PICK_DEFAULT);
if (!widget)
return NULL;
+ x = ex;
+ y = ey;
gtk_widget_translate_coordinates (event_widget, widget, x, y, &x, &y);
while (widget)