summaryrefslogtreecommitdiff
path: root/desktop/treeview.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-07-01 11:47:46 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-07-01 11:47:46 +0100
commitdf1667bd58c95517a16109bca9fb1db0a0a518b5 (patch)
tree7bf6e6c2fc7cedd83c0e96da185e2bb2a2c0c388 /desktop/treeview.c
parent6599f415f7b31fd09320c02bac1c50247574ace3 (diff)
downloadnetsurf-df1667bd58c95517a16109bca9fb1db0a0a518b5.tar.gz
netsurf-df1667bd58c95517a16109bca9fb1db0a0a518b5.tar.bz2
Start keypress handling.
Diffstat (limited to 'desktop/treeview.c')
-rw-r--r--desktop/treeview.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index 7cf454ea2..bca2deade 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -1195,6 +1195,54 @@ static void treeview_commit_selection_drag(struct treeview *tree)
treeview_node_selection_walk_cb, &sw);
}
+
+/* Exported interface, documented in treeview.h */
+bool treeview_keypress(struct treeview *tree, uint32_t key)
+{
+ struct rect r; /**< Redraw rectangle */
+ bool redraw = false;
+
+ assert(tree != NULL);
+
+ switch (key) {
+ case KEY_SELECT_ALL:
+ redraw = treeview_select_all(tree, &r);
+ break;
+ case KEY_COPY_SELECTION:
+ /* TODO: Copy selection as text */
+ break;
+ case KEY_DELETE_LEFT:
+ case KEY_DELETE_RIGHT:
+ /* TODO: Delete selection */
+ break;
+ case KEY_CR:
+ case KEY_NL:
+ /* TODO: Launch selection */
+ break;
+ case KEY_ESCAPE:
+ case KEY_CLEAR_SELECTION:
+ redraw = treeview_clear_selection(tree, &r);
+ break;
+ /* TODO: Trivial keyboard navigation */
+ case KEY_LEFT:
+ break;
+ case KEY_RIGHT:
+ break;
+ case KEY_UP:
+ break;
+ case KEY_DOWN:
+ break;
+ default:
+ return false;
+ }
+
+ if (redraw) {
+ tree->cw_t->redraw_request(tree->cw_h, r);
+ }
+
+ return true;
+}
+
struct treeview_mouse_action {
struct treeview *tree;
browser_mouse_state mouse;