Author: rjw
Date: Mon Mar 26 21:33:50 2007
New Revision: 3226
URL:
http://svn.semichrome.net?rev=3226&view=rev
Log:
Call close function for submenu windows.
Modified:
trunk/netsurf/riscos/menus.c
trunk/netsurf/riscos/wimp_event.c
trunk/netsurf/riscos/wimp_event.h
Modified: trunk/netsurf/riscos/menus.c
URL:
http://svn.semichrome.net/trunk/netsurf/riscos/menus.c?rev=3226&r1=32...
==============================================================================
--- trunk/netsurf/riscos/menus.c (original)
+++ trunk/netsurf/riscos/menus.c Mon Mar 26 21:33:50 2007
@@ -574,10 +574,7 @@
current_menu = NULL;
if (cleanup) {
- /* end any search operation that was started so that
- the text doesn't remain highlighted */
- if (ro_gui_menu_search_window_menu)
- ro_gui_search_end(dialog_search);
+ ro_gui_wimp_event_menus_closed();
if (tree)
ro_gui_tree_menu_closed(tree);
@@ -726,6 +723,7 @@
entries[warning->selection.items[i]];
if (IS_MENU(menu_entry->sub_menu)) {
+ ro_gui_wimp_event_register_submenu((wimp_w)0);
sub_menu = menu_entry->sub_menu;
i = 0;
do {
@@ -736,6 +734,7 @@
action, false);
} while (!(sub_menu->entries[i++].menu_flags & wimp_MENU_LAST));
} else {
+ ro_gui_wimp_event_register_submenu((wimp_w)menu_entry->sub_menu);
action = ro_gui_menu_find_action(current_menu, menu_entry);
if (action != NO_ACTION)
ro_gui_menu_prepare_action(current_menu_window,
Modified: trunk/netsurf/riscos/wimp_event.c
URL:
http://svn.semichrome.net/trunk/netsurf/riscos/wimp_event.c?rev=3226&...
==============================================================================
--- trunk/netsurf/riscos/wimp_event.c (original)
+++ trunk/netsurf/riscos/wimp_event.c Mon Mar 26 21:33:50 2007
@@ -100,6 +100,7 @@
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 @@
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 @@
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;
+}
Modified: trunk/netsurf/riscos/wimp_event.h
URL:
http://svn.semichrome.net/trunk/netsurf/riscos/wimp_event.h?rev=3226&...
==============================================================================
--- trunk/netsurf/riscos/wimp_event.h (original)
+++ trunk/netsurf/riscos/wimp_event.h Mon Mar 26 21:33:50 2007
@@ -68,4 +68,7 @@
bool ro_gui_wimp_event_register_menu_selection(wimp_w w,
void (*callback)(wimp_w w, wimp_i i));
+void ro_gui_wimp_event_menus_closed(void);
+void ro_gui_wimp_event_register_submenu(wimp_w w);
+
#endif