summaryrefslogtreecommitdiff
path: root/riscos/wimp_event.c
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2007-03-26 20:33:50 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2007-03-26 20:33:50 +0000
commit933c642019fd1c2bbb0dc4159b8cfc75a67ebaf4 (patch)
treeb32bef6aa2f4c683557b8a0c7f10a5440f2af14f /riscos/wimp_event.c
parente5129294c05fcca8bb44cb915b5bcff9857d9ae0 (diff)
downloadnetsurf-933c642019fd1c2bbb0dc4159b8cfc75a67ebaf4.tar.gz
netsurf-933c642019fd1c2bbb0dc4159b8cfc75a67ebaf4.tar.bz2
Call close function for submenu windows.
svn path=/trunk/netsurf/; revision=3226
Diffstat (limited to 'riscos/wimp_event.c')
-rw-r--r--riscos/wimp_event.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/riscos/wimp_event.c b/riscos/wimp_event.c
index b8690f5c0..87ed789ff 100644
--- a/riscos/wimp_event.c
+++ b/riscos/wimp_event.c
@@ -100,6 +100,7 @@ static struct event_window *ro_gui_wimp_event_remove_window(wimp_w w);
static struct event_window *ro_gui_wimp_event_windows[WIN_HASH_SIZE];
+static wimp_w ro_gui_wimp_event_submenu;
/**
* Memorises the current state of any registered components in a window.
@@ -856,6 +857,8 @@ bool ro_gui_wimp_event_close_window(wimp_w w) {
struct event_window *window;
LOG(("Close event received for window 0x%x", (unsigned int)w));
+ if (w == ro_gui_wimp_event_submenu)
+ ro_gui_wimp_event_submenu = 0;
window = ro_gui_wimp_event_find_window(w);
if ((window) && (window->close_window)) {
window->close_window(w);
@@ -1216,3 +1219,19 @@ struct icon_event *ro_gui_wimp_event_get_event(wimp_w w, wimp_i i, event_type ty
return event;
}
+
+/**
+ * Handle menus being closed
+ */
+void ro_gui_wimp_event_menus_closed(void) {
+ ro_gui_wimp_event_register_submenu(0);
+}
+
+/**
+ * Register a submenu as being opened
+ */
+void ro_gui_wimp_event_register_submenu(wimp_w w) {
+ if (ro_gui_wimp_event_submenu)
+ ro_gui_wimp_event_close_window(ro_gui_wimp_event_submenu);
+ ro_gui_wimp_event_submenu = w;
+}