diff options
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtktreestore.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c index 17e2ea644..e88b92ac5 100644 --- a/gtk/gtktreestore.c +++ b/gtk/gtktreestore.c @@ -1677,15 +1677,31 @@ gtk_tree_store_drag_data_received (GtkTreeDragDest *drag_dest, prev)) { GtkTreeIter tmp_iter = dest_iter; - gtk_tree_store_insert_after (GTK_TREE_STORE (tree_model), - &dest_iter, - NULL, - &tmp_iter); + + if (GPOINTER_TO_INT (g_object_get_data (G_OBJECT (tree_model), "gtk-tree-model-drop-append"))) + { + GtkTreeIter parent; + + if (gtk_tree_model_iter_parent (GTK_TREE_MODEL (tree_model), &parent, &tmp_iter)) + gtk_tree_store_append (GTK_TREE_STORE (tree_model), + &dest_iter, &parent); + else + gtk_tree_store_append (GTK_TREE_STORE (tree_model), + &dest_iter, NULL); + } + else + gtk_tree_store_insert_after (GTK_TREE_STORE (tree_model), + &dest_iter, + NULL, + &tmp_iter); retval = TRUE; } } + g_object_set_data (G_OBJECT (tree_model), "gtk-tree-model-drop-append", + NULL); + gtk_tree_path_free (prev); /* If we succeeded in creating dest_iter, walk src_iter tree branch, |