summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-06-03 18:54:19 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-06-03 18:54:19 +0100
commit088d60ec9662d2ecc34410fbaf6a7ff05c9e5558 (patch)
tree956e207ef28c4eea6a48351cf88307140d1786b5
parentfd453beb9702fd28f8724db969099b2f4463b62e (diff)
downloadnetsurf-088d60ec9662d2ecc34410fbaf6a7ff05c9e5558.tar.gz
netsurf-088d60ec9662d2ecc34410fbaf6a7ff05c9e5558.tar.bz2
Simplify redraw node walk.
-rw-r--r--desktop/treeview.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index dfa4ea3a1..812b3b330 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -796,29 +796,20 @@ void treeview_redraw(struct treeview *tree, int x, int y, struct rect *clip,
node = next;
inset += tree_g.step_width;
} else {
- /* no children */
- next = node->sibling_next;
-
- if (next != NULL) {
- /* on to next sibling */
- node = next;
- } else {
- /* no next sibling */
- while (node != root) {
- next = node->sibling_next;
+ /* No children. As long as we're not at the root,
+ * go to next sibling if present, or nearest ancestor
+ * with a next sibling. */
- if (next != NULL) {
- break;
- }
- node = node->parent;
- inset -= tree_g.step_width;
- }
+ while (node != root &&
+ node->sibling_next == NULL) {
+ node = node->parent;
+ inset -= tree_g.step_width;
+ }
- if (node == root)
- break;
+ if (node == root)
+ break;
- node = node->sibling_next;
- }
+ node = node->sibling_next;
}
assert(node != NULL);