summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Lees <adrian@aemulor.com>2006-02-10 18:10:09 +0000
committerAdrian Lees <adrian@aemulor.com>2006-02-10 18:10:09 +0000
commit9f0f47cff74deda2df45c95f22ceba822a54f7ee (patch)
treec85316e30c0e0da4cc32e3fc1f23c4ad38a746ea
parent7fe5a989e35633bdbde466511cb798843f80011d (diff)
downloadnetsurf-9f0f47cff74deda2df45c95f22ceba822a54f7ee.tar.gz
netsurf-9f0f47cff74deda2df45c95f22ceba822a54f7ee.tar.bz2
[project @ 2006-02-10 18:10:09 by adrianl]
Improved reporting of startup errors svn path=/import/netsurf/; revision=2068
-rw-r--r--riscos/gui.c43
1 files changed, 32 insertions, 11 deletions
diff --git a/riscos/gui.c b/riscos/gui.c
index d659eaf36..10e77685e 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -2176,19 +2176,40 @@ void gui_launch_url(const char *url)
void warn_user(const char *warning, const char *detail)
{
- char warn_buffer[300];
+ union {
+ char warn_buffer[300];
+ os_error error;
+ } d;
LOG(("%s %s", warning, detail));
- snprintf(warn_buffer, sizeof warn_buffer, "%s %s",
- messages_get(warning),
- detail ? detail : "");
- warn_buffer[sizeof warn_buffer - 1] = 0;
- ro_gui_set_icon_string(dialog_warning, ICON_WARNING_MESSAGE,
- warn_buffer);
- xwimp_set_icon_state(dialog_warning, ICON_WARNING_HELP,
- wimp_ICON_DELETED, wimp_ICON_DELETED);
- ro_gui_dialog_open(dialog_warning);
- xos_bell();
+
+ if (dialog_warning) {
+ snprintf(d.warn_buffer, sizeof d.warn_buffer, "%s %s",
+ messages_get(warning),
+ detail ? detail : "");
+ d.warn_buffer[sizeof d.warn_buffer - 1] = 0;
+ ro_gui_set_icon_string(dialog_warning, ICON_WARNING_MESSAGE,
+ d.warn_buffer);
+ xwimp_set_icon_state(dialog_warning, ICON_WARNING_HELP,
+ wimp_ICON_DELETED, wimp_ICON_DELETED);
+ ro_gui_dialog_open(dialog_warning);
+ xos_bell();
+ }
+ else {
+ /* probably haven't initialised (properly), use a
+ non-multitasking error box */
+ snprintf(d.error.errmess, sizeof d.error.errmess, "%s %s",
+ messages_get(warning),
+ detail ? detail : "");
+ d.error.errmess[sizeof d.error.errmess - 1] = 0;
+ xwimp_report_error_by_category(&d.error,
+ wimp_ERROR_BOX_OK_ICON |
+ wimp_ERROR_BOX_GIVEN_CATEGORY |
+ wimp_ERROR_BOX_CATEGORY_ERROR <<
+ wimp_ERROR_BOX_CATEGORY_SHIFT,
+ "NetSurf", "!netsurf",
+ (osspriteop_area *) 1, 0, 0);
+ }
}