diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-01-03 00:46:31 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-01-04 12:51:59 -0500 |
commit | caa166eec0845e7be37435de08037c5dbec1fc94 (patch) | |
tree | 1512349b7f21f41868363aca17cc431126617d23 | |
parent | 55fd4e6cfa9c9d6a86f4135f9732c76c35a32bed (diff) | |
download | gtk+-caa166eec0845e7be37435de08037c5dbec1fc94.tar.gz |
testlist3: Use async read api for selection
-rw-r--r-- | tests/testlist3.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/tests/testlist3.c b/tests/testlist3.c index d1d3563873..8bce1c77b9 100644 --- a/tests/testlist3.c +++ b/tests/testlist3.c @@ -24,19 +24,25 @@ drag_begin (GtkDragSource *source, } static void -drag_data_received (GtkDropTarget *dest, - GtkSelectionData *selection_data, - gpointer data) +got_row (GObject *src, + GAsyncResult *result, + gpointer data) { + GtkDropTarget *dest = GTK_DROP_TARGET (src); GtkWidget *target = data; GtkWidget *row; GtkWidget *source; int pos; + GtkSelectionData *selection_data; + + selection_data = gtk_drop_target_read_selection_finish (dest, result, NULL); pos = gtk_list_box_row_get_index (GTK_LIST_BOX_ROW (target)); row = (gpointer)* (gpointer*)gtk_selection_data_get_data (selection_data); source = gtk_widget_get_ancestor (row, GTK_TYPE_LIST_BOX_ROW); + gtk_selection_data_free (selection_data); + if (source == target) return; @@ -46,6 +52,15 @@ drag_data_received (GtkDropTarget *dest, g_object_unref (source); } +static void +drag_drop (GtkDropTarget *dest, + int x, + int y, + gpointer data) +{ + gtk_drop_target_read_selection (dest, "GTK_LIST_BOX_ROW", NULL, got_row, data); +} + static GtkWidget * create_row (const gchar *text) { @@ -73,8 +88,8 @@ create_row (const gchar *text) gtk_drag_source_attach (source, image, GDK_BUTTON1_MASK); targets = gdk_content_formats_new (entries, 1); - dest = gtk_drop_target_new (GTK_DEST_DEFAULT_ALL, targets, GDK_ACTION_MOVE); - g_signal_connect (dest, "drag-data-received", G_CALLBACK (drag_data_received), row); + dest = gtk_drop_target_new (GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT, targets, GDK_ACTION_MOVE); + g_signal_connect (dest, "drag-drop", G_CALLBACK (drag_drop), row); gtk_drop_target_attach (dest, row); gdk_content_formats_unref (targets); |