diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2003-09-29 02:47:11 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2003-09-29 02:47:11 +0000 |
commit | 20ae4bff717dfc1313cf8d52c4910b6350c87d23 (patch) | |
tree | a47817310a243fd94d13f8490377b9ffd9369be1 /desktop/browser.c | |
parent | 73f7db2a75a7cee2add50973e8861b767f5bb650 (diff) | |
download | netsurf-20ae4bff717dfc1313cf8d52c4910b6350c87d23.tar.gz netsurf-20ae4bff717dfc1313cf8d52c4910b6350c87d23.tar.bz2 |
[project @ 2003-09-29 02:47:11 by jmb]
Cursor keys and Enter in forms
svn path=/import/netsurf/; revision=331
Diffstat (limited to 'desktop/browser.c')
-rw-r--r-- | desktop/browser.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/desktop/browser.c b/desktop/browser.c index cc845d4e5..3ad447f94 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -732,7 +732,7 @@ void browser_window_textarea_callback(struct browser_window *bw, char key, void text_box->length = 0; text_box->width = UNKNOWN_WIDTH; char_offset--; - } + } } else { /* delete a character */ memmove(text_box->text + char_offset - 1, @@ -742,6 +742,20 @@ void browser_window_textarea_callback(struct browser_window *bw, char key, void text_box->width = UNKNOWN_WIDTH; char_offset--; } + } else if (key == 28 && char_offset != text_box->length) { + /* Right cursor -> */ + char_offset++; + } else if (key == 29 && char_offset != 0) { + /* Left cursor <- */ + char_offset--; + } else if (key == 30) { + /* Up Cursor */ + /* TODO */ + return; + } else if (key == 31) { + /* Down cursor */ + /* TODO */ + return; } else { return; } @@ -788,7 +802,7 @@ void browser_window_textarea_callback(struct browser_window *bw, char key, void if (!t->next) assert(ic->last == t); } } */ - + if (text_box->length < char_offset) { /* the text box has been split and the caret is in the second part */ char_offset -= (text_box->length + 1); /* +1 for the space */ @@ -862,6 +876,7 @@ void browser_window_input_callback(struct browser_window *bw, char key, void *p) int char_offset = input->gadget->caret_char_offset; int pixel_offset; unsigned long actual_x, actual_y; + struct form* form = input->gadget->form; box_coords(input, &actual_x, &actual_y); @@ -895,6 +910,20 @@ void browser_window_input_callback(struct browser_window *bw, char key, void *p) text_box->length--; input->gadget->value[text_box->length] = 0; char_offset--; + } else if (key == 10 || key == 13) { + /* Return/Enter hit */ + browser_form_submit(bw, form); + /*TODO: remove caret from new page */ + } else if (key == 9) { + /* Tab */ + /* TODO: tabbing between inputs */ + return; + } else if (key == 28 && char_offset != text_box->length) { + /* Right cursor -> */ + char_offset++; + } else if (key == 29 && char_offset != 0) { + /* Left cursor <- */ + char_offset--; } else { return; } |