diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-06-30 22:07:53 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-06-30 22:07:53 +0100 |
commit | 31450767c94ac241e8d96a910c850ff733d883d5 (patch) | |
tree | 6567fc719f3ca1d6bfc5067ccdf198a4c256da78 /desktop | |
parent | 0c3ac47b0594e5f2f78082242996c00c78bcca10 (diff) | |
download | netsurf-31450767c94ac241e8d96a910c850ff733d883d5.tar.gz netsurf-31450767c94ac241e8d96a910c850ff733d883d5.tar.bz2 |
Update ancestor heights on node deletion.
Diffstat (limited to 'desktop')
-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: |