diff options
Diffstat (limited to 'gtk/gtkiconview.c')
-rw-r--r-- | gtk/gtkiconview.c | 91 |
1 files changed, 44 insertions, 47 deletions
diff --git a/gtk/gtkiconview.c b/gtk/gtkiconview.c index 9400fdd24b..acaf40f10d 100644 --- a/gtk/gtkiconview.c +++ b/gtk/gtkiconview.c @@ -30,7 +30,6 @@ #include "gtkcellrenderertext.h" #include "gtkcombobox.h" #include "gtkcssnodeprivate.h" -#include "gtkdragdest.h" #include "gtkdragsource.h" #include "gtkentry.h" #include "gtkintl.h" @@ -48,7 +47,6 @@ #include "gtkwindow.h" #include "gtkeventcontrollerkey.h" #include "gtkdragsource.h" -#include "gtkdragdest.h" #include "gtkdragicon.h" #include "gtknative.h" @@ -287,19 +285,19 @@ static GdkContentProvider * gtk_icon_view_drag_data_get (GtkIco GtkTreePath *source_row); /* Target side drag signals */ -static void gtk_icon_view_drag_leave (GtkDropTarget *dest, - GdkDrop *drop, - GtkIconView *icon_view); -static void gtk_icon_view_drag_motion (GtkDropTarget *dest, - GdkDrop *drop, - int x, - int y, - GtkIconView *icon_view); -static gboolean gtk_icon_view_drag_drop (GtkDropTarget *dest, - GdkDrop *drop, - int x, - int y, - GtkIconView *icon_view); +static void gtk_icon_view_drag_leave (GtkDropTargetAsync *dest, + GdkDrop *drop, + GtkIconView *icon_view); +static GdkDragAction gtk_icon_view_drag_motion (GtkDropTargetAsync *dest, + GdkDrop *drop, + double x, + double y, + GtkIconView *icon_view); +static gboolean gtk_icon_view_drag_drop (GtkDropTargetAsync *dest, + GdkDrop *drop, + double x, + double y, + GtkIconView *icon_view); static void gtk_icon_view_drag_data_received (GObject *source, GAsyncResult *result, gpointer data); @@ -5828,12 +5826,12 @@ drag_scroll_timeout (gpointer data) } static gboolean -set_destination (GtkIconView *icon_view, - GtkDropTarget *dest, - gint x, - gint y, - GdkDragAction *suggested_action, - GType *target) +set_destination (GtkIconView *icon_view, + GtkDropTargetAsync *dest, + gint x, + gint y, + GdkDragAction *suggested_action, + GType *target) { GtkWidget *widget; GtkTreePath *path = NULL; @@ -5863,7 +5861,7 @@ set_destination (GtkIconView *icon_view, return FALSE; /* no longer a drop site */ } - formats = gtk_drop_target_get_formats (dest); + formats = gtk_drop_target_async_get_formats (dest); *target = gdk_content_formats_match_gtype (formats, formats); if (*target == G_TYPE_INVALID) return FALSE; @@ -6129,9 +6127,9 @@ gtk_icon_view_dnd_finished_cb (GdkDrag *drag, /* Target side drag signals */ static void -gtk_icon_view_drag_leave (GtkDropTarget *dest, - GdkDrop *drop, - GtkIconView *icon_view) +gtk_icon_view_drag_leave (GtkDropTargetAsync *dest, + GdkDrop *drop, + GtkIconView *icon_view) { /* unset any highlight row */ gtk_icon_view_set_drag_dest_item (icon_view, @@ -6141,24 +6139,22 @@ gtk_icon_view_drag_leave (GtkDropTarget *dest, remove_scroll_timeout (icon_view); } -static void -gtk_icon_view_drag_motion (GtkDropTarget *dest, - GdkDrop *drop, - int x, - int y, - GtkIconView *icon_view) +static GdkDragAction +gtk_icon_view_drag_motion (GtkDropTargetAsync *dest, + GdkDrop *drop, + double x, + double y, + GtkIconView *icon_view) { GtkTreePath *path = NULL; GtkIconViewDropPosition pos; GdkDragAction suggested_action = 0; GType target; gboolean empty; + GdkDragAction result; if (!set_destination (icon_view, dest, x, y, &suggested_action, &target)) - { - gdk_drop_status (drop, 0); - return; - } + return 0; gtk_icon_view_get_drag_dest_item (icon_view, &path, &pos); @@ -6168,7 +6164,7 @@ gtk_icon_view_drag_motion (GtkDropTarget *dest, if (path == NULL && !empty) { /* Can't drop here. */ - gdk_drop_status (drop, 0); + result = 0; } else { @@ -6189,20 +6185,22 @@ gtk_icon_view_drag_motion (GtkDropTarget *dest, else { set_status_pending (drop, 0); - gdk_drop_status (drop, suggested_action); } + result = suggested_action; } if (path) gtk_tree_path_free (path); + + return result; } static gboolean -gtk_icon_view_drag_drop (GtkDropTarget *dest, - GdkDrop *drop, - int x, - int y, - GtkIconView *icon_view) +gtk_icon_view_drag_drop (GtkDropTargetAsync *dest, + GdkDrop *drop, + double x, + double y, + GtkIconView *icon_view) { GtkTreePath *path; GdkDragAction suggested_action = 0; @@ -6217,7 +6215,7 @@ gtk_icon_view_drag_drop (GtkDropTarget *dest, if (!icon_view->priv->dest_set) return FALSE; - if (!check_model_dnd (model, GTK_TYPE_TREE_DRAG_DEST, "drag-drop")) + if (!check_model_dnd (model, GTK_TYPE_TREE_DRAG_DEST, "drop")) return FALSE; if (!set_destination (icon_view, dest, x, y, &suggested_action, &target)) @@ -6324,8 +6322,6 @@ gtk_icon_view_drag_data_received (GObject *source, suggested_action = 0; } - gdk_drop_status (drop, suggested_action); - if (path) gtk_tree_path_free (path); @@ -6407,10 +6403,11 @@ gtk_icon_view_enable_model_drag_dest (GtkIconView *icon_view, g_return_if_fail (GTK_IS_ICON_VIEW (icon_view)); - icon_view->priv->dest = gtk_drop_target_new (gdk_content_formats_ref (formats), actions); + icon_view->priv->dest = gtk_drop_target_async_new (gdk_content_formats_ref (formats), actions); g_signal_connect (icon_view->priv->dest, "drag-leave", G_CALLBACK (gtk_icon_view_drag_leave), icon_view); + g_signal_connect (icon_view->priv->dest, "drag-enter", G_CALLBACK (gtk_icon_view_drag_motion), icon_view); g_signal_connect (icon_view->priv->dest, "drag-motion", G_CALLBACK (gtk_icon_view_drag_motion), icon_view); - g_signal_connect (icon_view->priv->dest, "drag-drop", G_CALLBACK (gtk_icon_view_drag_drop), icon_view); + g_signal_connect (icon_view->priv->dest, "drop", G_CALLBACK (gtk_icon_view_drag_drop), icon_view); gtk_widget_add_controller (GTK_WIDGET (icon_view), GTK_EVENT_CONTROLLER (icon_view->priv->dest)); icon_view->priv->dest_actions = actions; |