summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2014-01-31 18:46:45 +0000
committerVincent Sanders <vince@kyllikki.org>2014-01-31 18:46:45 +0000
commit356461244e9a31d9c22fab358cdf95cb3f22364f (patch)
tree1af88f190b336a0aa172e4e371115f492dc27ef1 /riscos
parentf99b17ae89ee27ff746346c17c03b1ee5ab3076b (diff)
parent0114cc825d8a23ff99ce3a667aebc0ed21b0339f (diff)
downloadnetsurf-356461244e9a31d9c22fab358cdf95cb3f22364f.tar.gz
netsurf-356461244e9a31d9c22fab358cdf95cb3f22364f.tar.bz2
Merge remote-tracking branch 'origin/stevef/menus'
Diffstat (limited to 'riscos')
-rw-r--r--riscos/menus.c55
-rw-r--r--riscos/menus.h2
-rw-r--r--riscos/print.c2
-rw-r--r--riscos/wimp_event.c10
-rw-r--r--riscos/window.c14
5 files changed, 45 insertions, 38 deletions
diff --git a/riscos/menus.c b/riscos/menus.c
index 91232a160..d8e2f2c16 100644
--- a/riscos/menus.c
+++ b/riscos/menus.c
@@ -77,7 +77,7 @@ struct menu_definition {
struct menu_definition *next; /**< next menu */
};
-
+static void ro_gui_menu_closed(void);
static void ro_gui_menu_define_menu_add(struct menu_definition *definition,
const struct ns_menu *menu, int depth,
wimp_menu_entry *parent_entry,
@@ -213,6 +213,7 @@ void ro_gui_menu_init(void)
* \param y The y position.
* \param w The window that the menu belongs to.
*/
+
void ro_gui_menu_create(wimp_menu *menu, int x, int y, wimp_w w)
{
os_error *error;
@@ -252,6 +253,7 @@ void ro_gui_menu_create(wimp_menu *menu, int x, int y, wimp_w w)
* \param w window handle
* \param i icon handle
*/
+
void ro_gui_popup_menu(wimp_menu *menu, wimp_w w, wimp_i i)
{
wimp_window_state state;
@@ -286,29 +288,24 @@ void ro_gui_popup_menu(wimp_menu *menu, wimp_w w, wimp_i i)
/**
- * Clean up after a menu has been closed, or forcible close an open menu.
- */
-void ro_gui_menu_closed(void)
+ * Forcibly close any menu or transient dialogue box that is currently open.
+ */
+
+void ro_gui_menu_destroy(void)
{
os_error *error;
- if (current_menu) {
- error = xwimp_create_menu(wimp_CLOSE_MENU, 0, 0);
- if (error) {
- LOG(("xwimp_create_menu: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("MenuError", error->errmess);
- }
-
- ro_gui_wimp_event_menus_closed(current_menu_window,
- current_menu_icon, current_menu);
+ if (current_menu == NULL)
+ return;
- current_menu = NULL;
+ error = xwimp_create_menu(wimp_CLOSE_MENU, 0, 0);
+ if (error) {
+ LOG(("xwimp_create_menu: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("MenuError", error->errmess);
}
- current_menu_window = NULL;
- current_menu_icon = 0;
- current_menu_open = false;
+ ro_gui_menu_closed();
}
@@ -450,15 +447,25 @@ void ro_gui_menu_warning(wimp_message_menu_warning *warning)
void ro_gui_menu_message_deleted(wimp_message_menus_deleted *deleted)
{
- if (deleted != NULL && deleted->menu == current_menu) {
+ if (deleted != NULL && deleted->menu == current_menu)
+ ro_gui_menu_closed();
+}
+
+
+/**
+ * Clean up after a menu has been closed, or forcibly close an open menu.
+ */
+
+static void ro_gui_menu_closed(void)
+{
+ if (current_menu != NULL)
ro_gui_wimp_event_menus_closed(current_menu_window,
current_menu_icon, current_menu);
- current_menu = NULL;
- current_menu_window = NULL;
- current_menu_icon = 0;
- current_menu_open = false;
- }
+ current_menu = NULL;
+ current_menu_window = NULL;
+ current_menu_icon = 0;
+ current_menu_open = false;
}
diff --git a/riscos/menus.h b/riscos/menus.h
index e2269b77c..f49215f04 100644
--- a/riscos/menus.h
+++ b/riscos/menus.h
@@ -168,7 +168,7 @@ struct ns_menu {
void ro_gui_menu_init(void);
void ro_gui_menu_create(wimp_menu* menu, int x, int y, wimp_w w);
-void ro_gui_menu_closed(void);
+void ro_gui_menu_destroy(void);
void ro_gui_popup_menu(wimp_menu *menu, wimp_w w, wimp_i i);
void ro_gui_menu_window_changed(wimp_w from, wimp_w to);
void ro_gui_menu_selection(wimp_selection* selection);
diff --git a/riscos/print.c b/riscos/print.c
index 09d4aaefb..c539f011c 100644
--- a/riscos/print.c
+++ b/riscos/print.c
@@ -525,7 +525,7 @@ void ro_print_cleanup(void)
print_text_black = false;
print_prev_message = 0;
print_max_sheets = -1;
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
ro_gui_dialog_close(dialog_print);
}
diff --git a/riscos/wimp_event.c b/riscos/wimp_event.c
index a84c016ad..d048b9a1e 100644
--- a/riscos/wimp_event.c
+++ b/riscos/wimp_event.c
@@ -719,7 +719,7 @@ bool ro_gui_wimp_event_mouse_click(wimp_pointer *pointer)
}
ro_gui_dialog_add_persistent(current_menu_window,
pointer->w);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
error = xwimp_open_window(PTR_WIMP_OPEN(&open));
if (error) {
LOG(("xwimp_open_window: 0x%x: %s",
@@ -768,7 +768,7 @@ bool ro_gui_wimp_event_mouse_click(wimp_pointer *pointer)
if (pointer->buttons & wimp_CLICK_SELECT) {
ro_gui_dialog_close(pointer->w);
ro_gui_wimp_event_close_window(pointer->w);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
} else {
ro_gui_wimp_event_restore(pointer->w);
}
@@ -850,7 +850,7 @@ void ro_gui_wimp_event_ok_click(struct event_window *window,
if (state & wimp_CLICK_SELECT) {
ro_gui_dialog_close(window->w);
ro_gui_wimp_event_close_window(window->w);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
} else {
ro_gui_wimp_event_memorise(window->w);
}
@@ -1045,7 +1045,7 @@ bool ro_gui_wimp_event_keypress(wimp_key *key)
return false;
ro_gui_dialog_close(key->w);
ro_gui_wimp_event_close_window(key->w);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
return true;
/* Return performs the OK action */
case wimp_KEY_RETURN:
@@ -1772,7 +1772,7 @@ bool ro_gui_wimp_event_submenu_warning(wimp_w w, wimp_i i, wimp_menu *menu,
}
/**
- * Handle menus being closed. This is called from ro_gui_menu_closed(), in
+ * Handle menus being closed. This is called from the menus modules, in
* every scenario when one of our own menus is open.
*
* \param w the window to owning the menu
diff --git a/riscos/window.c b/riscos/window.c
index 164460850..ed0f9e297 100644
--- a/riscos/window.c
+++ b/riscos/window.c
@@ -654,7 +654,7 @@ static void gui_window_destroy(struct gui_window *g)
ro_gui_url_complete_close();
ro_gui_dialog_close_persistent(w);
if (current_menu_window == w)
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
ro_gui_window_remove_update_boxes(g);
/* delete window */
@@ -1395,7 +1395,7 @@ void gui_create_form_select_menu(struct browser_window *bw,
LOG(("xwimp_get_pointer_info: 0x%x: %s",
error->errnum, error->errmess));
warn_user("WimpError", error->errmess);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
return;
}
@@ -4811,7 +4811,7 @@ bool ro_gui_window_prepare_form_select_menu(struct browser_window *bw,
option = option->next)
entries++;
if (entries == 0) {
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
return false;
}
@@ -4835,7 +4835,7 @@ bool ro_gui_window_prepare_form_select_menu(struct browser_window *bw,
gui_form_select_menu = malloc(wimp_SIZEOF_MENU(entries));
if (!gui_form_select_menu) {
warn_user("NoMemory", 0);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
return false;
}
err = utf8_to_local_encoding(messages_get("SelectMenu"), 0,
@@ -4845,7 +4845,7 @@ bool ro_gui_window_prepare_form_select_menu(struct browser_window *bw,
assert(err != NSERROR_BAD_ENCODING);
LOG(("utf8_to_local_encoding failed"));
warn_user("NoMemory", 0);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
return false;
}
gui_form_select_menu->title_data.indirected_text.text =
@@ -4870,7 +4870,7 @@ bool ro_gui_window_prepare_form_select_menu(struct browser_window *bw,
if (!temp) {
LOG(("cnv_space2nbsp failed"));
warn_user("NoMemory", 0);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
return false;
}
@@ -4882,7 +4882,7 @@ bool ro_gui_window_prepare_form_select_menu(struct browser_window *bw,
assert(err != NSERROR_BAD_ENCODING);
LOG(("utf8_to_enc failed"));
warn_user("NoMemory", 0);
- ro_gui_menu_closed();
+ ro_gui_menu_destroy();
return false;
}