summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-06-30 22:07:53 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-06-30 22:07:53 +0100
commit31450767c94ac241e8d96a910c850ff733d883d5 (patch)
tree6567fc719f3ca1d6bfc5067ccdf198a4c256da78 /desktop
parent0c3ac47b0594e5f2f78082242996c00c78bcca10 (diff)
downloadnetsurf-31450767c94ac241e8d96a910c850ff733d883d5.tar.gz
netsurf-31450767c94ac241e8d96a910c850ff733d883d5.tar.bz2
Update ancestor heights on node deletion.
Diffstat (limited to 'desktop')
-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: