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 /gtk | |
parent | c545bb4b42dff8bfd4c288e330f52848ec2df6c4 (diff) | |
download | netsurf-3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8.tar.gz netsurf-3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8.tar.bz2 |
browser_window_navigate refactor
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/dialogs/about.c | 34 | ||||
-rw-r--r-- | gtk/scaffolding.c | 157 |
2 files changed, 164 insertions, 27 deletions
diff --git a/gtk/dialogs/about.c b/gtk/dialogs/about.c index 35150ff5d..7a8c10932 100644 --- a/gtk/dialogs/about.c +++ b/gtk/dialogs/about.c @@ -28,7 +28,22 @@ static void nsgtk_about_dialog_credits(GtkWidget *button, gpointer data) { struct browser_window *bw = data; - browser_window_go(bw, "about:credits", 0, true); + nsurl *url; + + if (nsurl_create("about:credits", &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + gtk_widget_destroy(gtk_widget_get_toplevel(button)); } @@ -36,7 +51,22 @@ static void nsgtk_about_dialog_licence(GtkWidget *button, gpointer data) { struct browser_window *bw = data; - browser_window_go(bw, "about:licence", 0, true); + nsurl *url; + + if (nsurl_create("about:licence", &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + gtk_widget_destroy(gtk_widget_get_toplevel(button)); } diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index 287fed12b..3f027f88f 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -442,16 +442,35 @@ gboolean nsgtk_window_url_activate_event(GtkWidget *widget, gpointer data) { struct gtk_scaffolding *g = data; struct browser_window *bw = nsgtk_get_browser_window(g->top_level); - char *url; - if (search_is_url(gtk_entry_get_text(GTK_ENTRY(g->url_bar))) - == false) - url = search_web_from_term(gtk_entry_get_text(GTK_ENTRY( + char *urltxt; + nsurl *url; + nserror error; + + if (search_is_url(gtk_entry_get_text(GTK_ENTRY(g->url_bar))) == false) { + urltxt = search_web_from_term(gtk_entry_get_text(GTK_ENTRY( g->url_bar))); - else - url = strdup(gtk_entry_get_text(GTK_ENTRY(g->url_bar))); - browser_window_go(bw, url, 0, true); - if (url != NULL) - free(url); + } else { + urltxt = strdup(gtk_entry_get_text(GTK_ENTRY(g->url_bar))); + } + + if (urltxt != NULL) { + error = nsurl_create(urltxt, &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + free(urltxt); + } + return TRUE; } @@ -525,14 +544,34 @@ static void nsgtk_window_tabs_remove(GtkNotebook *notebook, */ static void nsgtk_openfile_open(const char *filename) { - struct browser_window *bw = nsgtk_get_browser_window( - current_model->top_level); - char url[strlen(filename) + FILE_SCHEME_PREFIX_LEN + 1]; + struct browser_window *bw; + char *urltxt; + nsurl *url; + nserror error; + + bw = nsgtk_get_browser_window(current_model->top_level); - sprintf(url, FILE_SCHEME_PREFIX"%s", filename); + urltxt = malloc(strlen(filename) + FILE_SCHEME_PREFIX_LEN + 1); - browser_window_go(bw, url, 0, true); + if (urltxt != NULL) { + sprintf(urltxt, FILE_SCHEME_PREFIX"%s", filename); + error = nsurl_create(urltxt, &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + free(urltxt); + } } /* signal handlers for menu entries */ @@ -898,6 +937,7 @@ MULTIHANDLER(quit) MENUHANDLER(savelink) { + nsurl *url; struct gtk_scaffolding *g = (struct gtk_scaffolding *) data; struct gui_window *gui = g->top_level; struct browser_window *bw = nsgtk_get_browser_window(gui); @@ -905,8 +945,17 @@ MENUHANDLER(savelink) if (current_menu_ctx.link_url == NULL) return FALSE; - browser_window_download(bw, current_menu_ctx.link_url, - current_menu_ctx.link_url); + if (nsurl_create(current_menu_ctx.link_url, &url) == NSERROR_OK) { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_DOWNLOAD | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } return TRUE; } @@ -1365,14 +1414,28 @@ MULTIHANDLER(forward) MULTIHANDLER(home) { static const char *addr = NETSURF_HOMEPAGE; - struct browser_window *bw = - nsgtk_get_browser_window(g->top_level); + struct browser_window *bw = nsgtk_get_browser_window(g->top_level); + nsurl *url; + nserror error; if (nsoption_charp(homepage_url) != NULL) { addr = nsoption_charp(homepage_url); } - browser_window_go(bw, addr, 0, true); + error = nsurl_create(addr, &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } return TRUE; } @@ -1472,24 +1535,68 @@ MULTIHANDLER(closetab) MULTIHANDLER(contents) { - browser_window_go(nsgtk_get_browser_window(g->top_level), - "http://www.netsurf-browser.org/documentation/", 0, true); + struct browser_window *bw = nsgtk_get_browser_window(g->top_level); + nsurl *url; + nserror error; + + error = nsurl_create("http://www.netsurf-browser.org/documentation/", &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } return TRUE; } MULTIHANDLER(guide) { - browser_window_go(nsgtk_get_browser_window(g->top_level), - "http://www.netsurf-browser.org/documentation/guide", 0, true); + struct browser_window *bw = nsgtk_get_browser_window(g->top_level); + nsurl *url; + + if (nsurl_create("http://www.netsurf-browser.org/documentation/guide", &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } return TRUE; } MULTIHANDLER(info) { - browser_window_go(nsgtk_get_browser_window(g->top_level), - "http://www.netsurf-browser.org/documentation/info", 0, true); + struct browser_window *bw = nsgtk_get_browser_window(g->top_level); + nsurl *url; + + if (nsurl_create("http://www.netsurf-browser.org/documentation/info", &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } return TRUE; } |