From 3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Thu, 14 Feb 2013 15:09:28 +0000 Subject: browser_window_navigate refactor --- riscos/gui/url_bar.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'riscos/gui') 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; -- cgit v1.2.3