summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/treeview.c8
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: