diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2013-02-14 15:09:28 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2013-02-18 11:23:27 +0000 |
commit | 3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8 (patch) | |
tree | 40aa4e52aa50010c8f7c47dda79be2b77339e546 /riscos/gui/url_bar.c | |
parent | c545bb4b42dff8bfd4c288e330f52848ec2df6c4 (diff) | |
download | netsurf-3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8.tar.gz netsurf-3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8.tar.bz2 |
browser_window_navigate refactor
Diffstat (limited to 'riscos/gui/url_bar.c')
-rw-r--r-- | riscos/gui/url_bar.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/riscos/gui/url_bar.c b/riscos/gui/url_bar.c index 74fe2806b..eb3483d91 100644 --- a/riscos/gui/url_bar.c +++ b/riscos/gui/url_bar.c @@ -690,19 +690,36 @@ bool ro_gui_url_bar_menu_prepare(struct url_bar *url_bar, wimp_i i, bool ro_gui_url_bar_menu_select(struct url_bar *url_bar, wimp_i i, wimp_menu *menu, wimp_selection *selection, menu_action action) { - const char *url; - struct gui_window *g; + const char *urltxt; + struct gui_window *g; if (url_bar == NULL || url_bar->suggest_icon != i || menu != ro_gui_url_suggest_menu) return false; - url = ro_gui_url_suggest_get_selection(selection); + urltxt = ro_gui_url_suggest_get_selection(selection); g = ro_gui_toolbar_lookup(url_bar->window); - if (url != NULL && g != NULL && g->bw != NULL) { - gui_window_set_url(g, url); - browser_window_go(g->bw, url, 0, true); + if (urltxt != NULL && g != NULL && g->bw != NULL) { + nsurl *url; + nserror error; + + gui_window_set_url(g, urltxt); + + error = nsurl_create(urltxt, &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + browser_window_navigate(g->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } } return true; |