diff options
-rw-r--r-- | desktop/treeview.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c index 725125d9a..c6b09e2f9 100644 --- a/desktop/treeview.c +++ b/desktop/treeview.c @@ -470,6 +470,7 @@ nserror treeview_delete_node(struct treeview *tree, struct treeview_node *n) { struct treeview_node_msg msg; msg.msg = TREE_MSG_NODE_DELETE; + struct treeview_node *p; /* Destroy children first */ while (n->children != NULL) { @@ -491,6 +492,13 @@ nserror treeview_delete_node(struct treeview *tree, struct treeview_node *n) n->sibling_next->sibling_prev = n->sibling_prev; } + /* Reduce ancestor heights */ + p = n->parent; + while (p != NULL && p->flags & TREE_NODE_EXPANDED) { + p->height -= n->height; + p = p->parent; + } + /* Handle any special treatment */ switch (n->type) { case TREE_NODE_ENTRY: |