diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2013-02-14 18:21:11 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2013-02-18 11:23:48 +0000 |
commit | b112dec78d5e8289ded3f61db96e495690ae96b5 (patch) | |
tree | 9babaed21ed2eb841b8d398e28814544c73656d9 /gtk | |
parent | 3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8 (diff) | |
download | netsurf-b112dec78d5e8289ded3f61db96e495690ae96b5.tar.gz netsurf-b112dec78d5e8289ded3f61db96e495690ae96b5.tar.bz2 |
change browser_window_create and refactor all callsites
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/dialogs/source.c | 20 | ||||
-rw-r--r-- | gtk/gui.c | 35 | ||||
-rw-r--r-- | gtk/scaffolding.c | 108 |
3 files changed, 129 insertions, 34 deletions
diff --git a/gtk/dialogs/source.c b/gtk/dialogs/source.c index 0804dfffb..3834daa6f 100644 --- a/gtk/dialogs/source.c +++ b/gtk/dialogs/source.c @@ -254,11 +254,14 @@ void nsgtk_source_dialog_init(GtkWindow *parent, struct browser_window *bw) gtk_widget_show(GTK_WIDGET(wndSource)); } + void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw) { const char *source_data; unsigned long source_size; char *ndata = 0; + nsurl *url; + nserror error; source_data = content_get_source_data(bw->current_content, &source_size); @@ -298,8 +301,23 @@ void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw) warn_user(messages_get("NoMemory"), 0); return; } + /* Open tab */ - browser_window_create(fileurl, bw, NULL, false, true); + error = nsurl_create(fileurl, &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE | + BROWSER_WINDOW_GO_FLAG_TAB, + url, + NULL, + bw, + NULL); + nsurl_unref(url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } + } free(fileurl); } @@ -351,8 +351,10 @@ nsurl *gui_get_resource_url(const char *path) static void gui_init(int argc, char** argv, char **respath) { char buf[PATH_MAX]; - const char *addr = NETSURF_HOMEPAGE; char *resource_filename; + const char *addr; + nsurl *url; + nserror error; /* check user options */ check_options(respath); @@ -457,15 +459,32 @@ static void gui_init(int argc, char** argv, char **respath) sslcert_init(tree_content_icon_name); - if (nsoption_charp(homepage_url) != NULL) { - addr = nsoption_charp(homepage_url); + /* If there is a url specified on the command line use it */ + if (argc > 1) { + addr = argv[1]; + } else if (nsoption_charp(homepage_url) != NULL) { + addr = nsoption_charp(homepage_url); + } else { + addr = NETSURF_HOMEPAGE; } - if (2 <= argc) - addr = argv[1]; + /* 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); + } else { + netsurf_main_loop(); + } - /* Last step of initialization. Opens the main browser window. */ - browser_window_create(addr, 0, 0, true, false); } @@ -524,8 +543,6 @@ int main(int argc, char** argv) gui_init(argc, argv, respaths); - netsurf_main_loop(); - /* Ensure all scaffoldings are destroyed before we go into exit */ while (scaf_list != NULL) nsgtk_scaffolding_destroy(scaf_list); diff --git a/gtk/scaffolding.c b/gtk/scaffolding.c index 3f027f88f..3ebf051dc 100644 --- a/gtk/scaffolding.c +++ b/gtk/scaffolding.c @@ -579,15 +579,28 @@ static void nsgtk_openfile_open(const char *filename) MULTIHANDLER(newwindow) { struct browser_window *bw = nsgtk_get_browser_window(g->top_level); - const char *url = nsoption_charp(homepage_url); - - if (url != NULL) - url = NULL; + const char *addr; + nsurl *url; + nserror error; - if (url == NULL) - url = NETSURF_HOMEPAGE; + if (nsoption_charp(homepage_url) != NULL) { + addr = nsoption_charp(homepage_url); + } else { + addr = NETSURF_HOMEPAGE; + } - browser_window_create(url, bw, NULL, false, false); + error = nsurl_create(addr, &url); + if (error == NSERROR_OK) { + error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + url, + NULL, + bw, + NULL); + nsurl_unref(url); + } + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } return TRUE; } @@ -595,25 +608,41 @@ MULTIHANDLER(newwindow) MULTIHANDLER(newtab) { struct browser_window *bw = nsgtk_get_browser_window(g->top_level); + nsurl *url; + nserror error; - if (nsoption_bool(new_blank)) { - browser_window_create(NULL, bw, NULL, false, true); + if (!nsoption_bool(new_blank)) { + const char *addr; + if (nsoption_charp(homepage_url) != NULL) { + addr = nsoption_charp(homepage_url); + } else { + addr = NETSURF_HOMEPAGE; + } + error = nsurl_create(addr, &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } + } + + error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE | + BROWSER_WINDOW_GO_FLAG_TAB, + url, + NULL, + bw, + NULL); + if (url != NULL) { + nsurl_unref(url); + } + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else if (nsoption_bool(new_blank)) { + /** @todo what the heck is this for? */ GtkWidget *window = gtk_notebook_get_nth_page(g->notebook, -1); nsgtk_widget_override_background_color(window, - GTK_STATE_NORMAL, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF); - } else { - const char *url = nsoption_charp(homepage_url); - - if (url != NULL) - url = NULL; - - if (url == NULL) - url = NETSURF_HOMEPAGE; - - browser_window_create(url, bw, NULL, false, true); + GTK_STATE_NORMAL, + 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF); } - + return TRUE; } @@ -968,11 +997,25 @@ MENUHANDLER(link_openwin) struct gtk_scaffolding *g = (struct gtk_scaffolding *) data; struct gui_window *gui = g->top_level; struct browser_window *bw = nsgtk_get_browser_window(gui); + nsurl *url; + nserror error; if (current_menu_ctx.link_url == NULL) return FALSE; - browser_window_create(current_menu_ctx.link_url, bw, NULL, true, false); + error = nsurl_create(current_menu_ctx.link_url, &url); + if (error == NSERROR_OK) { + error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE | + BROWSER_WINDOW_GO_FLAG_HISTORY, + url, + NULL, + bw, + NULL); + nsurl_unref(url); + } + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } return TRUE; } @@ -985,12 +1028,29 @@ MENUHANDLER(link_opentab) struct gtk_scaffolding *g = (struct gtk_scaffolding *) data; struct gui_window *gui = g->top_level; struct browser_window *bw = nsgtk_get_browser_window(gui); + nsurl *url; + nserror error; if (current_menu_ctx.link_url == NULL) return FALSE; temp_open_background = 1; - browser_window_create(current_menu_ctx.link_url, bw, NULL, true, true); + + error = nsurl_create(current_menu_ctx.link_url, &url); + if (error == NSERROR_OK) { + error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE | + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_TAB, + url, + NULL, + bw, + NULL); + nsurl_unref(url); + } + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } + temp_open_background = -1; return TRUE; |