summaryrefslogtreecommitdiff
path: root/tests/testtreednd.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2020-02-18 01:41:42 +0100
committerBenjamin Otte <otte@redhat.com>2020-02-18 02:40:00 +0100
commitb8cf7ea1c6ee97c3ad1a95717d62bcfe33786116 (patch)
tree109746158e14bbb59256ce98b21963847ca91b87 /tests/testtreednd.c
parent1145da3ea5a60387ea4bc7a93ee52f08a3c20b80 (diff)
downloadgtk+-b8cf7ea1c6ee97c3ad1a95717d62bcfe33786116.tar.gz
dnd: Port the TreeModel machinery to GValue DND
Diffstat (limited to 'tests/testtreednd.c')
-rw-r--r--tests/testtreednd.c39
1 files changed, 17 insertions, 22 deletions
diff --git a/tests/testtreednd.c b/tests/testtreednd.c
index 16efa7e302..c087527ce3 100644
--- a/tests/testtreednd.c
+++ b/tests/testtreednd.c
@@ -22,20 +22,20 @@ my_model_init (MyModel *object)
gtk_list_store_set_column_types (GTK_LIST_STORE (object), G_N_ELEMENTS (types), types);
}
-static gboolean
+static GdkContentProvider *
my_model_drag_data_get (GtkTreeDragSource *source,
- GtkTreePath *path,
- GtkSelectionData *data)
+ GtkTreePath *path)
{
+ GdkContentProvider *content;
GtkTreeIter iter;
gchar *text;
gtk_tree_model_get_iter (GTK_TREE_MODEL (source), &iter, path);
gtk_tree_model_get (GTK_TREE_MODEL (source), &iter, 0, &text, -1);
- gtk_selection_data_set_text (data, text, -1);
+ content = gdk_content_provider_new_typed (G_TYPE_STRING, text);
g_free (text);
- return TRUE;
+ return content;
}
static void
@@ -63,10 +63,6 @@ get_model (void)
return GTK_TREE_MODEL (model);
}
-static const char *entries[] = {
- "text/plain"
-};
-
static GtkWidget *
get_dragsource (void)
{
@@ -81,7 +77,7 @@ get_dragsource (void)
gtk_tree_view_append_column (tv, column);
gtk_tree_view_set_model (tv, get_model ());
- targets = gdk_content_formats_new (entries, G_N_ELEMENTS (entries));
+ targets = gdk_content_formats_new_for_gtype (G_TYPE_STRING);
gtk_tree_view_enable_model_drag_source (tv, GDK_BUTTON1_MASK, targets, GDK_ACTION_COPY);
gdk_content_formats_unref (targets);
@@ -93,18 +89,15 @@ got_text (GObject *source,
GAsyncResult *result,
gpointer data)
{
- GtkDropTarget *dest = GTK_DROP_TARGET (source);
- GtkWidget *widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (dest));
- gchar *text;
- GtkSelectionData *selda;
+ GdkDrop *drop = GDK_DROP (source);
+ GtkWidget *widget = data;
+ const GValue *value;
- selda = gtk_drop_target_read_selection_finish (dest, result, NULL);
+ value = gdk_drop_read_value_finish (drop, result, NULL);
+ if (value == NULL)
+ return;
- text = (gchar*) gtk_selection_data_get_text (selda);
- gtk_label_set_label (GTK_LABEL (widget), text);
- g_free (text);
-
- gtk_selection_data_free (selda);
+ gtk_label_set_label (GTK_LABEL (widget), g_value_get_string (value));
}
static void
@@ -114,7 +107,9 @@ drag_drop (GtkDropTarget *dest,
int y,
gpointer dada)
{
- gtk_drop_target_read_selection (dest, "text/plain", NULL, got_text, dada);
+ GtkWidget *widget = gtk_event_controller_get_widget (GTK_EVENT_CONTROLLER (dest));
+
+ gdk_drop_read_value_async (drop, G_TYPE_STRING, G_PRIORITY_DEFAULT, NULL, got_text, widget);
}
static GtkWidget *
@@ -124,7 +119,7 @@ get_droptarget (void)
GtkDropTarget *dest;
label = gtk_label_new ("Drop here");
- dest = gtk_drop_target_new (gdk_content_formats_new (entries, G_N_ELEMENTS (entries)), GDK_ACTION_COPY);
+ dest = gtk_drop_target_new (gdk_content_formats_new_for_gtype (G_TYPE_STRING), GDK_ACTION_COPY);
g_signal_connect (dest, "drag-drop", G_CALLBACK (drag_drop), NULL);
gtk_widget_add_controller (label, GTK_EVENT_CONTROLLER (dest));