diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-07-09 13:47:06 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-07-09 13:47:06 +0100 |
commit | 0df23dda20d830f55f3237a5bb2c61b9a409b691 (patch) | |
tree | 33999a2b6eca0800f3e35873c6c97443df816c6f | |
parent | 11eed50de4064ad84e1693acb0abbf0599cbe30f (diff) | |
download | netsurf-0df23dda20d830f55f3237a5bb2c61b9a409b691.tar.gz netsurf-0df23dda20d830f55f3237a5bb2c61b9a409b691.tar.bz2 |
Cursor right toggles expansion.
-rw-r--r-- | desktop/treeview.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c index 8dbfce5d1..88f9cc0d0 100644 --- a/desktop/treeview.c +++ b/desktop/treeview.c @@ -1607,14 +1607,24 @@ static bool treeview_keyboard_navigation(treeview *tree, uint32_t key, break; case KEY_RIGHT: - if (ns.curr != NULL && - ns.curr->children != NULL) { - /* Step to first child */ + if (ns.curr != NULL) { if (!(ns.curr->flags & TREE_NODE_EXPANDED)) { - /* Need to expand node */ + /* Toggle node to expanded */ treeview_node_expand(tree, ns.curr); + if (ns.curr->children != NULL) { + /* Step to first child */ + ns.curr->children->flags |= + TREE_NODE_SELECTED; + } else { + /* Retain current node selection */ + ns.curr->flags |= TREE_NODE_SELECTED; + } + } else { + /* Toggle node to contracted */ + treeview_node_contract(tree, ns.curr); + /* Retain current node selection */ + ns.curr->flags |= TREE_NODE_SELECTED; } - ns.curr->children->flags |= TREE_NODE_SELECTED; } else if (ns.curr != NULL) { /* Retain current node selection */ |