diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-07-01 11:47:46 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-07-01 11:47:46 +0100 |
commit | df1667bd58c95517a16109bca9fb1db0a0a518b5 (patch) | |
tree | 7bf6e6c2fc7cedd83c0e96da185e2bb2a2c0c388 | |
parent | 6599f415f7b31fd09320c02bac1c50247574ace3 (diff) | |
download | netsurf-df1667bd58c95517a16109bca9fb1db0a0a518b5.tar.gz netsurf-df1667bd58c95517a16109bca9fb1db0a0a518b5.tar.bz2 |
Start keypress handling.
-rw-r--r-- | desktop/treeview.c | 48 | ||||
-rw-r--r-- | desktop/treeview.h | 10 |
2 files changed, 58 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; diff --git a/desktop/treeview.h b/desktop/treeview.h index 2579d8553..9692d0aa7 100644 --- a/desktop/treeview.h +++ b/desktop/treeview.h @@ -27,6 +27,7 @@ #include <stdint.h> #include "desktop/core_window.h" +#include "desktop/textinput.h" #include "utils/types.h" struct treeview; @@ -232,6 +233,15 @@ void treeview_redraw(struct treeview *tree, int x, int y, struct rect *clip, const struct redraw_context *ctx); /** + * Key press handling for treeviews. + * + * \param tree The treeview which got the keypress + * \param key The ucs4 character codepoint + * \return true if the keypress is dealt with, false otherwise. + */ +bool treeview_keypress(struct treeview *tree, uint32_t key); + +/** * Handles all kinds of mouse action * * \param tree Treeview object |