summaryrefslogtreecommitdiff
path: root/gtk/gtktreestore.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtktreestore.c')
-rw-r--r--gtk/gtktreestore.c24
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,