diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-07-09 14:24:48 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-07-09 14:24:48 +0100 |
commit | ed557f090a60a1c96dae9bc3319990d589bc60ec (patch) | |
tree | 75363b0ea28eea6cdbb9e566f437a5319f9369e6 /desktop/treeview.c | |
parent | 0df23dda20d830f55f3237a5bb2c61b9a409b691 (diff) | |
download | netsurf-ed557f090a60a1c96dae9bc3319990d589bc60ec.tar.gz netsurf-ed557f090a60a1c96dae9bc3319990d589bc60ec.tar.bz2 |
Cursor down moves to next after noncontinuous selections.
Diffstat (limited to 'desktop/treeview.c')
-rw-r--r-- | desktop/treeview.c | 7 |
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; |