summaryrefslogtreecommitdiff
path: root/riscos/wimp_event.c
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2006-09-06 14:46:18 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2006-09-06 14:46:18 +0000
commitd5540f344d5048ce06ef86fa9072fbf38a260a48 (patch)
treedd5ce5bba78e31abe7899d41e220d430a2fd0fe9 /riscos/wimp_event.c
parent1999becb42cc639d470405e8be33bf66ab93ef81 (diff)
downloadnetsurf-d5540f344d5048ce06ef86fa9072fbf38a260a48.tar.gz
netsurf-d5540f344d5048ce06ef86fa9072fbf38a260a48.tar.bz2
Finish event based GUI system transiton and begin code cleanup.
svn path=/trunk/netsurf/; revision=2923
Diffstat (limited to 'riscos/wimp_event.c')
-rw-r--r--riscos/wimp_event.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/riscos/wimp_event.c b/riscos/wimp_event.c
index 388726747..e6c45ef23 100644
--- a/riscos/wimp_event.c
+++ b/riscos/wimp_event.c
@@ -641,6 +641,8 @@ bool ro_gui_wimp_event_keypress(wimp_key *key) {
static wchar_t wc = 0; /* buffer for UTF8 alphabet */
static int shift = 0;
struct event_window *window;
+ struct icon_event *event;
+ wimp_pointer pointer;
wimp_key k;
wchar_t c = (wchar_t)key->c;
int t_alphabet;
@@ -789,13 +791,21 @@ bool ro_gui_wimp_event_keypress(wimp_key *key) {
return true;
switch (key->c) {
- /* Escape closes a dialog with a registered OK button */
+ /* Escape performs the CANCEL action (simulated click) */
case wimp_KEY_ESCAPE:
- if (!window->ok_click)
- return false;
- ro_gui_dialog_close(key->w);
- ro_gui_menu_closed(true);
- return true;
+ for (event = window->first; event; event = event->next) {
+ switch (event->type) {
+ case EVENT_CANCEL:
+ pointer.w = key->w;
+ pointer.i = event->i;
+ pointer.buttons = wimp_CLICK_SELECT;
+ ro_gui_wimp_event_mouse_click(&pointer);
+ return true;
+ default:
+ break;
+ }
+ }
+ return false;
/* CTRL+F2 closes a window with a close icon */
case wimp_KEY_CONTROL + wimp_KEY_F2:
if (!ro_gui_wimp_check_window_furniture(key->w,