From b112dec78d5e8289ded3f61db96e495690ae96b5 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Thu, 14 Feb 2013 18:21:11 +0000 Subject: change browser_window_create and refactor all callsites --- riscos/dialog.c | 34 ++++-- riscos/gui.c | 82 +++++++++----- riscos/iconbar.c | 23 +++- riscos/uri.c | 17 ++- riscos/url_protocol.c | 16 ++- riscos/window.c | 293 ++++++++++++++++++++++++++++++++++---------------- 6 files changed, 331 insertions(+), 134 deletions(-) (limited to 'riscos') 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); + } } -- cgit v1.2.3