summaryrefslogtreecommitdiff
path: root/desktop/treeview.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-08-17 13:27:38 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-08-17 13:27:38 +0100
commite1468a78df6bd0addc212961ef9c43d546155032 (patch)
tree31d8c486cec853b10519470a8330f2cf83c622c7 /desktop/treeview.c
parente17e56b0cc56ab3de5b0734a2e5d6c5b90241ab4 (diff)
downloadnetsurf-e1468a78df6bd0addc212961ef9c43d546155032.tar.gz
netsurf-e1468a78df6bd0addc212961ef9c43d546155032.tar.bz2
Fix keyboard nav redraw when treeview height decreases as a result of keypress. Reduce some variable name lengths.
Diffstat (limited to 'desktop/treeview.c')
-rw-r--r--desktop/treeview.c75
1 files changed, 39 insertions, 36 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index bfef1cc86..f52068e82 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -81,8 +81,8 @@ struct treeview_node {
int inset; /**< Node's inset depending on tree depth (pixels) */
treeview_node *parent;
- treeview_node *sibling_prev;
- treeview_node *sibling_next;
+ treeview_node *prev_sib;
+ treeview_node *next_sib;
treeview_node *children;
void *client_data; /**< Passed to client on node event msg callback */
@@ -217,8 +217,8 @@ static nserror treeview_create_node_root(treeview_node **root)
n->text.value.width = 0;
n->parent = NULL;
- n->sibling_next = NULL;
- n->sibling_prev = NULL;
+ n->next_sib = NULL;
+ n->prev_sib = NULL;
n->children = NULL;
n->client_data = NULL;
@@ -248,20 +248,20 @@ static inline void treeview_insert_node(treeview_node *a,
case TREE_REL_FIRST_CHILD:
assert(b->type != TREE_NODE_ENTRY);
a->parent = b;
- a->sibling_next = b->children;
- if (a->sibling_next)
- a->sibling_next->sibling_prev = a;
+ a->next_sib = b->children;
+ if (a->next_sib)
+ a->next_sib->prev_sib = a;
b->children = a;
break;
case TREE_REL_NEXT_SIBLING:
assert(b->type != TREE_NODE_ROOT);
- a->sibling_prev = b;
- a->sibling_next = b->sibling_next;
+ a->prev_sib = b;
+ a->next_sib = b->next_sib;
a->parent = b->parent;
- b->sibling_next = a;
- if (a->sibling_next)
- a->sibling_next->sibling_prev = a;
+ b->next_sib = a;
+ if (a->next_sib)
+ a->next_sib->prev_sib = a;
break;
default:
@@ -326,8 +326,8 @@ nserror treeview_create_node_folder(treeview *tree,
n->text.value.width = 0;
n->parent = NULL;
- n->sibling_next = NULL;
- n->sibling_prev = NULL;
+ n->next_sib = NULL;
+ n->prev_sib = NULL;
n->children = NULL;
n->client_data = data;
@@ -451,8 +451,8 @@ nserror treeview_create_node_entry(treeview *tree,
n->text.value.width = 0;
n->parent = NULL;
- n->sibling_next = NULL;
- n->sibling_prev = NULL;
+ n->next_sib = NULL;
+ n->prev_sib = NULL;
n->children = NULL;
n->client_data = data;
@@ -501,7 +501,7 @@ static inline treeview_node * treeview_node_next(treeview_node *node, bool full)
* with a next sibling. */
while (node != NULL && node->type != TREE_NODE_ROOT &&
- node->sibling_next == NULL) {
+ node->next_sib == NULL) {
node = node->parent;
}
@@ -509,7 +509,7 @@ static inline treeview_node * treeview_node_next(treeview_node *node, bool full)
node = NULL;
} else if (node != NULL) {
- node = node->sibling_next;
+ node = node->next_sib;
}
}
@@ -541,7 +541,7 @@ static nserror treeview_walk_internal(treeview_node *root, bool full,
node = root;
parent = node->parent;
- next_sibling = node->sibling_next;
+ next_sibling = node->next_sib;
child = (!skip_children &&
(full || (node->flags & TREE_NODE_EXPANDED))) ?
node->children : NULL;
@@ -573,7 +573,7 @@ static nserror treeview_walk_internal(treeview_node *root, bool full,
}
node = parent;
parent = node->parent;
- next_sibling = node->sibling_next;
+ next_sibling = node->next_sib;
}
if (node == root)
@@ -599,7 +599,7 @@ static nserror treeview_walk_internal(treeview_node *root, bool full,
assert(node != root);
parent = node->parent;
- next_sibling = node->sibling_next;
+ next_sibling = node->next_sib;
child = (full || (node->flags & TREE_NODE_EXPANDED)) ?
node->children : NULL;
@@ -678,16 +678,16 @@ static nserror treeview_delete_node_walk_cb(treeview_node *n,
/* Unlink node from tree */
if (n->parent != NULL && n->parent->children == n) {
/* Node is a first child */
- n->parent->children = n->sibling_next;
+ n->parent->children = n->next_sib;
- } else if (n->sibling_prev != NULL) {
+ } else if (n->prev_sib != NULL) {
/* Node is not first child */
- n->sibling_prev->sibling_next = n->sibling_next;
+ n->prev_sib->next_sib = n->next_sib;
}
- if (n->sibling_next != NULL) {
+ if (n->next_sib != NULL) {
/* Always need to do this */
- n->sibling_next->sibling_prev = n->sibling_prev;
+ n->next_sib->prev_sib = n->prev_sib;
}
/* Reduce ancestor heights */
@@ -801,7 +801,7 @@ static nserror treeview_delete_empty_nodes(treeview *tree, bool interaction)
node = root;
parent = node->parent;
- next_sibling = node->sibling_next;
+ next_sibling = node->next_sib;
child = (node->flags & TREE_NODE_EXPANDED) ? node->children : NULL;
while (node != NULL) {
@@ -827,7 +827,7 @@ static nserror treeview_delete_empty_nodes(treeview *tree, bool interaction)
}
node = parent;
parent = node->parent;
- next_sibling = node->sibling_next;
+ next_sibling = node->next_sib;
}
if (node == root)
@@ -849,7 +849,7 @@ static nserror treeview_delete_empty_nodes(treeview *tree, bool interaction)
assert(node != root);
parent = node->parent;
- next_sibling = node->sibling_next;
+ next_sibling = node->next_sib;
child = (node->flags & TREE_NODE_EXPANDED) ?
node->children : NULL;
}
@@ -1020,7 +1020,7 @@ nserror treeview_node_expand(treeview *tree,
additional_height += child->height;
- child = child->sibling_next;
+ child = child->next_sib;
} while (child != NULL);
break;
@@ -1190,14 +1190,14 @@ void treeview_redraw(treeview *tree, int x, int y, struct rect *clip,
* with a next sibling. */
while (node != root &&
- node->sibling_next == NULL) {
+ node->next_sib == NULL) {
node = node->parent;
}
if (node == root)
break;
- node = node->sibling_next;
+ node = node->next_sib;
}
assert(node != NULL);
@@ -1742,6 +1742,8 @@ static bool treeview_keyboard_navigation(treeview *tree, uint32_t key,
};
bool redraw = false;
+ rect->y1 = tree->root->height;
+
/* Fill out the nav. state struct, by examining the current selection
* state */
treeview_walk_internal(tree->root, false, NULL,
@@ -1816,7 +1818,8 @@ static bool treeview_keyboard_navigation(treeview *tree, uint32_t key,
rect->x0 = 0;
rect->y0 = 0;
rect->x1 = REDRAW_MAX;
- rect->y1 = tree->root->height;
+ if (rect->y1 < tree->root->height)
+ rect->y1 = tree->root->height;
redraw = true;
return redraw;
@@ -1858,9 +1861,9 @@ static bool treeview_set_move_indicator(treeview *tree, bool need_redraw,
}
/* Find top ajdacent selected sibling */
- while (target->sibling_prev &&
- target->sibling_prev->flags & TREE_NODE_SELECTED) {
- target = target->sibling_prev;
+ while (target->prev_sib &&
+ target->prev_sib->flags & TREE_NODE_SELECTED) {
+ target = target->prev_sib;
}
target_pos = TV_TARGET_ABOVE;