summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2013-02-14 18:21:11 +0000
committerVincent Sanders <vince@netsurf-browser.org>2013-02-18 11:23:48 +0000
commitb112dec78d5e8289ded3f61db96e495690ae96b5 (patch)
tree9babaed21ed2eb841b8d398e28814544c73656d9 /riscos
parent3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8 (diff)
downloadnetsurf-b112dec78d5e8289ded3f61db96e495690ae96b5.tar.gz
netsurf-b112dec78d5e8289ded3f61db96e495690ae96b5.tar.bz2
change browser_window_create and refactor all callsites
Diffstat (limited to 'riscos')
-rw-r--r--riscos/dialog.c34
-rw-r--r--riscos/gui.c82
-rw-r--r--riscos/iconbar.c23
-rw-r--r--riscos/uri.c17
-rw-r--r--riscos/url_protocol.c16
-rw-r--r--riscos/window.c293
6 files changed, 331 insertions, 134 deletions
diff --git a/riscos/dialog.c b/riscos/dialog.c
index 1fabbcb5e..d66b1cb08 100644
--- a/riscos/dialog.c
+++ b/riscos/dialog.c
@@ -705,17 +705,35 @@ void ro_gui_dialog_update_zoom(struct gui_window *g) {
bool ro_gui_dialog_openurl_apply(wimp_w w) {
- const char *url;
+ const char *urltxt;
char *url2;
+ nsurl *url;
+ nserror error;
- url = ro_gui_get_icon_string(w, ICON_OPENURL_URL);
- url2 = strdup(url);
- if (url2 != NULL) {
- browser_window_create(url2, 0, 0, true, false);
- free(url2);
- return true;
+ urltxt = ro_gui_get_icon_string(w, ICON_OPENURL_URL);
+ url2 = strdup(urltxt); /** @todo why is this copied */
+ if (url2 == NULL) {
+ return false;
+ }
+
+ error = nsurl_create(url2, &url);
+ free(url2);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
}
- return false;
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ return false;
+ }
+
+ return true;
+
}
diff --git a/riscos/gui.c b/riscos/gui.c
index a9827c707..afe82aba9 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -777,8 +777,24 @@ static void gui_init2(int argc, char** argv)
}
}
- if (open_window)
- browser_window_create(url, NULL, 0, true, false);
+ if (open_window) {
+ nsurl *urlns;
+ nserror errorns;
+
+ errorns = nsurl_create(yrl, &urlns);
+ if (errorns == NSERROR_OK) {
+ errorns = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ urlns,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(urlns);
+ }
+ if (errorns != NSERROR_OK) {
+ warn_user(messages_get_errorcode(errorns), 0);
+ }
+ }
free(url);
}
@@ -1498,9 +1514,9 @@ void ro_msg_dataload(wimp_message *message)
char *urltxt = NULL;
char *title = NULL;
struct gui_window *g;
- os_error *error;
+ os_error *oserror;
nsurl *url;
- nserror nserror;
+ nserror error;
g = ro_gui_window_lookup(message->data.data_xfer.w);
if (g) {
@@ -1556,12 +1572,10 @@ void ro_msg_dataload(wimp_message *message)
return;
- nserror = nsurl_create(urltxt, &url);
- if (nserror != NSERROR_OK) {
- warn_user(messages_get_errorcode(nserror), 0);
- } else {
+ error = nsurl_create(urltxt, &url);
+ if (nserror == NSERROR_OK) {
if (g) {
- browser_window_navigate(g->bw,
+ error = browser_window_navigate(g->bw,
url,
NULL,
BROWSER_WINDOW_GO_FLAG_HISTORY |
@@ -1577,25 +1591,32 @@ void ro_msg_dataload(wimp_message *message)
#endif
} else {
- browser_window_create(url, NULL, NULL, true, false);
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
}
-
nsurl_unref(url);
}
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ }
+ free(urltxt);
/* send DataLoadAck */
message->action = message_DATA_LOAD_ACK;
message->your_ref = message->my_ref;
- error = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
- if (error) {
+ oserror = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
+ if (oserror) {
LOG(("xwimp_send_message: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
+ oserror->errnum, oserror->errmess));
+ warn_user("WimpError", oserror->errmess);
return;
}
- free(urltxt);
}
@@ -1896,7 +1917,9 @@ void ro_msg_dataopen(wimp_message *message)
int file_type = message->data.data_xfer.file_type;
char *url = 0;
size_t len;
- os_error *error;
+ os_error *oserror;
+ nsurl *urlns;
+ nserror error;
if (file_type == 0xb28) /* ANT URL file */
url = ro_gui_url_file_parse(message->data.data_xfer.file_name);
@@ -1924,11 +1947,11 @@ void ro_msg_dataopen(wimp_message *message)
/* send DataLoadAck */
message->action = message_DATA_LOAD_ACK;
message->your_ref = message->my_ref;
- error = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
- if (error) {
+ oserror = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
+ if (oserror) {
LOG(("xwimp_send_message: 0x%x: %s",
- error->errnum, error->errmess));
- warn_user("WimpError", error->errmess);
+ oserror->errnum, oserror->errmess));
+ warn_user("WimpError", oserror->errmess);
return;
}
@@ -1937,10 +1960,21 @@ void ro_msg_dataopen(wimp_message *message)
* functions called above */
return;
- /* create a new window with the file */
- browser_window_create(url, NULL, 0, true, false);
-
+ error = nsurl_create(url, &urlns);
free(url);
+ if (error == NSERROR_OK) {
+ /* create a new window with the file */
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ urlns,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(urlns);
+ }
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ }
}
diff --git a/riscos/iconbar.c b/riscos/iconbar.c
index 24d8661cc..a23f4063c 100644
--- a/riscos/iconbar.c
+++ b/riscos/iconbar.c
@@ -118,15 +118,30 @@ void ro_gui_iconbar_initialise(void)
bool ro_gui_iconbar_click(wimp_pointer *pointer)
{
int key_down = 0;
+ nsurl *url;
+ nserror error;
switch (pointer->buttons) {
case wimp_CLICK_SELECT:
if (nsoption_charp(homepage_url) != NULL) {
- browser_window_create(nsoption_charp(homepage_url),
- NULL, 0, true, false);
+ error = nsurl_create(nsoption_charp(homepage_url), &url);
} else {
- browser_window_create(NETSURF_HOMEPAGE,
- NULL, 0, true, false);
+ error = nsurl_create(NETSURF_HOMEPAGE, &url);
+ }
+
+ /* create an initial browser window */
+ error = nsurl_create(addr, &url);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
+ }
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
}
break;
diff --git a/riscos/uri.c b/riscos/uri.c
index 986a84022..d4e96b438 100644
--- a/riscos/uri.c
+++ b/riscos/uri.c
@@ -42,6 +42,8 @@ void ro_uri_message_received(wimp_message *msg)
char* uri_requested;
int uri_length;
nsurl *nsurl;
+ nsurl *url;
+ nserror error;
uri_handle = uri_message->handle;
@@ -69,9 +71,20 @@ void ro_uri_message_received(wimp_message *msg)
xuri_request_uri(0, uri_requested, uri_length, uri_handle, NULL);
- browser_window_create(uri_requested, NULL, 0, true, false);
-
+ error = nsurl_create(uri_requested, &url);
free(uri_requested);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
+ }
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ }
}
bool ro_uri_launch(const char *uri)
diff --git a/riscos/url_protocol.c b/riscos/url_protocol.c
index 272847e83..66245689c 100644
--- a/riscos/url_protocol.c
+++ b/riscos/url_protocol.c
@@ -54,6 +54,7 @@ void ro_url_message_received(wimp_message *message)
(inetsuite_message_open_url*) &message->data;
os_error *error;
nsurl *nsurl;
+ nserror errorns;
/* If the url_message->indirect.tag is non-zero,
* then the message data is contained within the message block.
@@ -111,7 +112,7 @@ void ro_url_message_received(wimp_message *message)
return;
}
- nsurl_unref(nsurl);
+ free(url);
/* send ack */
message->your_ref = message->my_ref;
@@ -124,9 +125,18 @@ void ro_url_message_received(wimp_message *message)
}
/* create new browser window */
- browser_window_create(url, 0, 0, true, false);
+ errorns = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ nsurl,
+ NULL,
+ NULL,
+ NULL);
- free(url);
+
+ nsurl_unref(nsurl);
+ if (errorns != NSERROR_OK) {
+ warn_user(messages_get_errorcode(errorns), 0);
+ }
}
diff --git a/riscos/window.c b/riscos/window.c
index a0a64a17f..29c74302a 100644
--- a/riscos/window.c
+++ b/riscos/window.c
@@ -1909,6 +1909,8 @@ bool ro_gui_window_handle_local_keypress(struct gui_window *g, wimp_key *key,
uint32_t c = (uint32_t) key->c;
wimp_scroll_direction xscroll = wimp_SCROLL_NONE;
wimp_scroll_direction yscroll = wimp_SCROLL_NONE;
+ nsurl *url;
+ nserror error;
if (g == NULL)
return false;
@@ -1917,11 +1919,22 @@ bool ro_gui_window_handle_local_keypress(struct gui_window *g, wimp_key *key,
switch (c) {
case IS_WIMP_KEY + wimp_KEY_F1: /* Help. */
- browser_window_create(
- "http://www.netsurf-browser.org/documentation/",
- NULL, 0, true, false);
+ {
+ error = nsurl_create("http://www.netsurf-browser.org/documentation/", &url);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
+ }
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ }
return true;
-
+ }
case IS_WIMP_KEY + wimp_KEY_CONTROL + wimp_KEY_F1:
ro_gui_window_action_page_info(g);
return true;
@@ -2627,7 +2640,8 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
hlcache_handle *h;
struct toolbar *toolbar;
wimp_window_state state;
- os_error *error;
+ nsurl *url;
+ nserror error;
g = (struct gui_window *) ro_gui_wimp_event_get_user_data(w);
toolbar = g->toolbar;
@@ -2650,28 +2664,72 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
switch (action) {
- /* help actions */
+ /* help actions */
case HELP_OPEN_CONTENTS:
- browser_window_create(
- "http://www.netsurf-browser.org/documentation/",
- NULL, 0, true, false);
+ error = nsurl_create("http://www.netsurf-browser.org/documentation/", &url);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
+ }
break;
+
case HELP_OPEN_GUIDE:
- browser_window_create(
- "http://www.netsurf-browser.org/documentation/guide",
- NULL, 0, true, false);
+ error = nsurl_create("http://www.netsurf-browser.org/documentation/guide", &url);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
+ }
break;
+
case HELP_OPEN_INFORMATION:
- browser_window_create(
- "http://www.netsurf-browser.org/documentation/info",
- NULL, 0, true, false);
+ error = nsurl_create("http://www.netsurf-browser.org/documentation/info", &url);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
+ }
break;
+
case HELP_OPEN_CREDITS:
- browser_window_create("about:credits", NULL, 0, true, false);
+ error = nsurl_create("about:credits", &url);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
+ }
break;
+
case HELP_OPEN_LICENCE:
- browser_window_create("about:licence", NULL, 0, true, false);
+ error = nsurl_create("about:licence", &url);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ NULL,
+ NULL,
+ NULL);
+ nsurl_unref(url);
+ }
break;
+
case HELP_LAUNCH_INTERACTIVE:
if (!ro_gui_interactive_help_available()) {
ro_gui_interactive_help_start();
@@ -2681,7 +2739,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
}
break;
- /* history actions */
+ /* history actions */
case HISTORY_SHOW_LOCAL:
ro_gui_window_action_local_history(g);
break;
@@ -2689,7 +2747,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
ro_gui_global_history_open();
break;
- /* hotlist actions */
+ /* hotlist actions */
case HOTLIST_ADD_URL:
ro_gui_window_action_add_bookmark(g);
break;
@@ -2697,7 +2755,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
ro_gui_hotlist_open();
break;
- /* cookies actions */
+ /* cookies actions */
case COOKIES_SHOW:
ro_gui_cookies_open();
break;
@@ -2706,7 +2764,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
cookies_delete_all();
break;
- /* page actions */
+ /* page actions */
case BROWSER_PAGE_INFO:
ro_gui_window_action_page_info(g);
break;
@@ -2721,13 +2779,13 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
ro_gui_view_source(h);
break;
- /* object actions */
+ /* object actions */
case BROWSER_OBJECT_INFO:
if (current_menu_object != NULL) {
ro_gui_window_prepare_objectinfo(current_menu_object,
- current_menu_url);
+ current_menu_url);
ro_gui_dialog_open_persistent(g->window,
- dialog_objinfo, false);
+ dialog_objinfo, false);
}
break;
case BROWSER_OBJECT_RELOAD:
@@ -2741,77 +2799,84 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
case BROWSER_LINK_SAVE_URI:
if (current_menu_url != NULL) {
ro_gui_save_prepare(GUI_SAVE_LINK_URI, NULL, NULL,
- current_menu_url, NULL);
+ current_menu_url, NULL);
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
- false);
+ false);
}
break;
case BROWSER_LINK_SAVE_URL:
if (current_menu_url != NULL) {
ro_gui_save_prepare(GUI_SAVE_LINK_URL, NULL, NULL,
- current_menu_url, NULL);
+ current_menu_url, NULL);
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
- false);
+ false);
}
break;
case BROWSER_LINK_SAVE_TEXT:
if (current_menu_url != NULL) {
ro_gui_save_prepare(GUI_SAVE_LINK_TEXT, NULL, NULL,
- current_menu_url, NULL);
+ current_menu_url, NULL);
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
- false);
+ false);
}
break;
+
case BROWSER_LINK_DOWNLOAD:
if (current_menu_url != NULL) {
- nsurl *url;
- nserror error;
-
error = nsurl_create(current_menu_url, &url);
- if (error != NSERROR_OK) {
- warn_user(messages_get_errorcode(error), 0);
- } else {
- browser_window_navigate(bw,
- url,
- hlcache_handle_get_url(h),
- BROWSER_WINDOW_GO_FLAG_DOWNLOAD |
- BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
- NULL,
- NULL,
- NULL);
+ if (error == NSERROR_OK) {
+ error = browser_window_navigate(bw,
+ url,
+ hlcache_handle_get_url(h),
+ BROWSER_WINDOW_GO_FLAG_DOWNLOAD |
+ BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ NULL,
+ NULL,
+ NULL);
nsurl_unref(url);
}
+ }
break;
+
case BROWSER_LINK_NEW_WINDOW:
- if (current_menu_url != NULL)
- browser_window_create(current_menu_url, bw,
- nsurl_access(hlcache_handle_get_url(h)),
- true, false);
+ if (current_menu_url != NULL) {
+ error = nsurl_create(current_menu_url, &url);
+ if (error == NSERROR_OK) {
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
+ BROWSER_WINDOW_GO_FLAG_HISTORY,
+ url,
+ hlcache_handle_get_url(h),
+ bw,
+ NULL);
+ nsurl_unref(url);
+ }
+ }
break;
+
/* save actions */
case BROWSER_OBJECT_SAVE:
if (current_menu_object != NULL) {
ro_gui_save_prepare(GUI_SAVE_OBJECT_ORIG,
- current_menu_object, NULL, NULL, NULL);
+ current_menu_object, NULL, NULL, NULL);
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
- false);
+ false);
}
break;
case BROWSER_OBJECT_EXPORT_SPRITE:
if (current_menu_object != NULL) {
ro_gui_save_prepare(GUI_SAVE_OBJECT_NATIVE,
- current_menu_object, NULL, NULL, NULL);
+ current_menu_object, NULL, NULL, NULL);
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
- false);
+ false);
}
break;
case BROWSER_OBJECT_EXPORT_DRAW:
if (current_menu_object != NULL) {
ro_gui_save_prepare(GUI_SAVE_OBJECT_NATIVE,
- current_menu_object, NULL, NULL, NULL);
+ current_menu_object, NULL, NULL, NULL);
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
- false);
+ false);
}
break;
case BROWSER_SAVE:
@@ -2839,14 +2904,14 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
ro_gui_window_action_save(g, GUI_SAVE_LINK_TEXT);
break;
- /* selection actions */
+ /* selection actions */
case BROWSER_SELECTION_SAVE:
if (h != NULL) {
ro_gui_save_prepare(GUI_SAVE_TEXT_SELECTION, NULL,
- browser_window_get_selection(bw),
- NULL, NULL);
+ browser_window_get_selection(bw),
+ NULL, NULL);
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
- false);
+ false);
}
break;
case BROWSER_SELECTION_COPY:
@@ -2865,7 +2930,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
browser_window_key_press(bw, KEY_CLEAR_SELECTION);
break;
- /* navigation actions */
+ /* navigation actions */
case BROWSER_NAVIGATE_HOME:
ro_gui_window_action_home(g);
break;
@@ -2880,7 +2945,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
case BROWSER_NAVIGATE_UP:
if (bw != NULL && h != NULL)
ro_gui_window_navigate_up(bw->window,
- nsurl_access(hlcache_handle_get_url(h)));
+ nsurl_access(hlcache_handle_get_url(h)));
break;
case BROWSER_NAVIGATE_RELOAD_ALL:
if (bw != NULL)
@@ -2891,7 +2956,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
browser_window_stop(bw);
break;
- /* browser window/display actions */
+ /* browser window/display actions */
case BROWSER_SCALE_VIEW:
ro_gui_window_action_zoom(g);
break;
@@ -2911,11 +2976,11 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
case BROWSER_BUFFER_ANIMS:
if (g != NULL)
g->option.buffer_animations =
- !g->option.buffer_animations;
+ !g->option.buffer_animations;
break;
case BROWSER_BUFFER_ALL:
if (g != NULL)
- g->option.buffer_everything =
+ g->option.buffer_everything =
!g->option.buffer_everything;
break;
case BROWSER_SAVE_VIEW:
@@ -2926,31 +2991,35 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
break;
case BROWSER_WINDOW_DEFAULT:
if (g != NULL) {
+ os_error *oserror;
+
ro_gui_screen_size(&nsoption_int(window_screen_width),
&nsoption_int(window_screen_height));
state.w = w;
- error = xwimp_get_window_state(&state);
- if (error) {
+ oserror = xwimp_get_window_state(&state);
+ if (oserror) {
LOG(("xwimp_get_window_state: 0x%x: %s",
- error->errnum,
- error->errmess));
- warn_user("WimpError", error->errmess);
+ oserror->errnum,
+ oserror->errmess));
+ warn_user("WimpError", oserror->errmess);
}
nsoption_set_int(window_x, state.visible.x0);
nsoption_set_int(window_y, state.visible.y0);
nsoption_set_int(window_width,
- state.visible.x1 - state.visible.x0);
+ state.visible.x1 - state.visible.x0);
nsoption_set_int(window_height,
- state.visible.y1 - state.visible.y0);
+ state.visible.y1 - state.visible.y0);
ro_gui_save_options();
}
break;
case BROWSER_WINDOW_STAGGER:
- nsoption_set_bool(window_stagger, !nsoption_bool(window_stagger));
+ nsoption_set_bool(window_stagger,
+ !nsoption_bool(window_stagger));
ro_gui_save_options();
break;
case BROWSER_WINDOW_COPY:
- nsoption_set_bool(window_size_clone, !nsoption_bool(window_size_clone));
+ nsoption_set_bool(window_size_clone,
+ !nsoption_bool(window_size_clone));
ro_gui_save_options();
break;
case BROWSER_WINDOW_RESET:
@@ -2959,7 +3028,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
ro_gui_save_options();
break;
- /* toolbar actions */
+ /* toolbar actions */
case TOOLBAR_BUTTONS:
assert(toolbar);
ro_toolbar_set_display_buttons(toolbar,
@@ -2986,6 +3055,10 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
return false;
}
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ }
+
return true;
}
@@ -3607,13 +3680,23 @@ void ro_gui_window_toolbar_click(void *data,
case TOOLBAR_BUTTON_UP_NEW:
if (g->bw && g->bw->current_content) {
hlcache_handle *h = g->bw->current_content;
- new_bw = browser_window_create(NULL,
- g->bw, NULL, false,
- false);
- /* do it without loading the content
- * into the new window */
- ro_gui_window_navigate_up(new_bw->window,
+ nserror error;
+
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ NULL,
+ NULL,
+ g->bw,
+ &new_bw);
+
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ } else {
+ /* do it without loading the content
+ * into the new window
+ */
+ ro_gui_window_navigate_up(new_bw->window,
nsurl_access(hlcache_handle_get_url(h)));
+ }
}
break;
@@ -3954,10 +4037,8 @@ void ro_gui_window_action_home(struct gui_window *g)
}
error = nsurl_create(addr, &url);
- if (error != NSERROR_OK) {
- warn_user(messages_get_errorcode(error), 0);
- } else {
- browser_window_navigate(g->bw,
+ if (error == NSERROR_OK) {
+ error = browser_window_navigate(g->bw,
url,
NULL,
BROWSER_WINDOW_GO_FLAG_HISTORY |
@@ -3967,7 +4048,9 @@ void ro_gui_window_action_home(struct gui_window *g)
NULL);
nsurl_unref(url);
}
-
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ }
}
@@ -3979,15 +4062,23 @@ void ro_gui_window_action_home(struct gui_window *g)
void ro_gui_window_action_navigate_back_new(struct gui_window *g)
{
- struct browser_window *new_bw;
+ struct browser_window *new_bw;
+ nserror error;
if (g == NULL || g->bw == NULL)
return;
- new_bw = browser_window_create(NULL, g->bw, NULL, false, false);
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ NULL,
+ NULL,
+ g->bw,
+ &new_bw);
- if (new_bw != NULL && new_bw->history != NULL)
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ } else {
history_back(new_bw, new_bw->history);
+ }
}
@@ -3999,15 +4090,23 @@ void ro_gui_window_action_navigate_back_new(struct gui_window *g)
void ro_gui_window_action_navigate_forward_new(struct gui_window *g)
{
- struct browser_window *new_bw;
+ struct browser_window *new_bw;
+ nserror error;
if (g == NULL || g->bw == NULL)
return;
- new_bw = browser_window_create(NULL, g->bw, NULL, false, false);
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ NULL,
+ NULL,
+ g->bw,
+ &new_bw);
- if (new_bw != NULL && new_bw->history != NULL)
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ } else {
history_forward(new_bw, new_bw->history);
+ }
}
@@ -4019,12 +4118,20 @@ void ro_gui_window_action_navigate_forward_new(struct gui_window *g)
void ro_gui_window_action_new_window(struct gui_window *g)
{
+ nserror error;
+
if (g == NULL || g->bw == NULL || g->bw->current_content == NULL)
return;
- browser_window_create(nsurl_access(
- hlcache_handle_get_url(g->bw->current_content)), g->bw,
- 0, false, false);
+ error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ hlcache_handle_get_url(g->bw->current_content),
+ NULL,
+ g->bw,
+ NULL);
+
+ if (error != NSERROR_OK) {
+ warn_user(messages_get_errorcode(error), 0);
+ }
}