From ed557f090a60a1c96dae9bc3319990d589bc60ec Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Tue, 9 Jul 2013 14:24:48 +0100 Subject: Cursor down moves to next after noncontinuous selections. --- desktop/treeview.c | 7 +++++-- 1 file 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; -- cgit v1.2.3