summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-07-09 14:24:48 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-07-09 14:24:48 +0100
commited557f090a60a1c96dae9bc3319990d589bc60ec (patch)
tree75363b0ea28eea6cdbb9e566f437a5319f9369e6
parent0df23dda20d830f55f3237a5bb2c61b9a409b691 (diff)
downloadnetsurf-ed557f090a60a1c96dae9bc3319990d589bc60ec.tar.gz
netsurf-ed557f090a60a1c96dae9bc3319990d589bc60ec.tar.bz2
Cursor down moves to next after noncontinuous selections.
-rw-r--r--desktop/treeview.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index 88f9cc0d0..c15c9eeae 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -1528,6 +1528,7 @@ struct treeview_nav_state {
treeview_node *next;
treeview_node *last;
int n_selected;
+ int prev_n_selected;
};
/** Treewalk node callback for handling mouse action. */
static nserror treeview_node_nav_cb(treeview_node *node, void *ctx,
@@ -1548,8 +1549,9 @@ static nserror treeview_node_nav_cb(treeview_node *node, void *ctx,
if (ns->n_selected == 0) {
ns->prev = node;
- } else if (ns->next == NULL) {
+ } else if (ns->prev_n_selected < ns->n_selected) {
ns->next = node;
+ ns->prev_n_selected = ns->n_selected;
}
}
ns->last = node;
@@ -1576,7 +1578,8 @@ static bool treeview_keyboard_navigation(treeview *tree, uint32_t key,
.curr = NULL,
.next = NULL,
.last = NULL,
- .n_selected = 0
+ .n_selected = 0,
+ .prev_n_selected = 0
};
bool redraw = false;