summaryrefslogtreecommitdiff
path: root/libnautilus-private/nautilus-ctree.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnautilus-private/nautilus-ctree.c')
-rw-r--r--libnautilus-private/nautilus-ctree.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/libnautilus-private/nautilus-ctree.c b/libnautilus-private/nautilus-ctree.c
index c33628fed..39e2cc2f6 100644
--- a/libnautilus-private/nautilus-ctree.c
+++ b/libnautilus-private/nautilus-ctree.c
@@ -3818,6 +3818,8 @@ nautilus_ctree_insert_node (NautilusCTree *ctree,
text[ctree->tree_column] : NULL, spacing, pixmap_closed,
mask_closed, pixmap_opened, mask_opened, is_leaf, expanded);
+ nautilus_ctree_link (ctree, node, parent, sibling, TRUE);
+
/* sorted insertion */
if (GTK_CLIST_AUTO_SORT (clist))
{
@@ -3826,12 +3828,13 @@ nautilus_ctree_insert_node (NautilusCTree *ctree,
else
sibling = NAUTILUS_CTREE_NODE (clist->row_list);
- while (sibling && clist->compare
- (clist, NAUTILUS_CTREE_ROW (node), NAUTILUS_CTREE_ROW (sibling)) > 0)
+ while (sibling
+ && (sibling == node || clist->compare (clist, NAUTILUS_CTREE_ROW (node), NAUTILUS_CTREE_ROW (sibling)) > 0))
sibling = NAUTILUS_CTREE_ROW (sibling)->sibling;
- }
- nautilus_ctree_link (ctree, node, parent, sibling, TRUE);
+ nautilus_ctree_unlink (ctree, node, TRUE);
+ nautilus_ctree_link (ctree, node, parent, sibling, TRUE);
+ }
if (text && !GTK_CLIST_AUTO_RESIZE_BLOCKED (clist) &&
nautilus_ctree_is_viewable (ctree, node))