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 --- beos/gui.cpp | 2 +- beos/scaffolding.cpp | 91 ++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 82 insertions(+), 11 deletions(-) (limited to 'beos') diff --git a/beos/gui.cpp b/beos/gui.cpp index 133ee8ca8..c556d45e5 100644 --- a/beos/gui.cpp +++ b/beos/gui.cpp @@ -1071,7 +1071,7 @@ static void nsbeos_ssl_accept(beosButton *w, gpointer data) beosWindow *wnd = session[3]; urldb_set_cert_permissions(url, true); - browser_window_go(bw, url, 0, true); + browser_window_navigate(bw, url, 0, true); beos_widget_destroy(beos_WIDGET(wnd)); g_object_unref(G_OBJECT(x)); diff --git a/beos/scaffolding.cpp b/beos/scaffolding.cpp index 709795b53..0a337685d 100644 --- a/beos/scaffolding.cpp +++ b/beos/scaffolding.cpp @@ -782,10 +782,29 @@ void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *m } else url << path.Path(); - if (/*message->WasDropped() &&*/ i == 0) - browser_window_go(bw, url.String(), 0, true); - else - browser_window_create(url.String(), bw, NULL, false, false); + nsurl *nsurl; + nserror error; + + error = nsurl_create(url.String(), &nsurl); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + if (/*message->WasDropped() &&*/ i == 0) { + browser_window_navigate(bw, + nsurl, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + } else { + browser_window_create(nsurl, NULL, bw, false, false); + } + nsurl_unref(nsurl); + } + + } break; } @@ -808,7 +827,24 @@ void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *m BString url; if (message->FindString("be:url", &url) < B_OK) break; - browser_window_go(bw, url.String(), 0, true); + + nsurl *nsurl; + nserror error; + + error = nsurl_create(url.String(), &nsurl); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + browser_window_navigate(bw, + nsurl, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(nsurl); + } break; } case B_COPY: @@ -857,23 +893,58 @@ void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *m case BROWSER_NAVIGATE_HOME: case 'home': { + nsurl *url; + nserror error; + static const char *addr = NETSURF_HOMEPAGE; - if (nsoption_charp(homepage_url) != NULL) + 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); + } break; } case 'urle': { + nsurl *url; + nserror error; BString text; + if (!scaffold->url_bar->LockLooper()) break; + text = scaffold->url_bar->Text(); scaffold->scroll_view->Target()->MakeFocus(); scaffold->url_bar->UnlockLooper(); - browser_window_go(bw, text.String(), 0, true); + + error = nsurl_create(text.String(), &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); + } break; } case 'urlc': @@ -1136,7 +1207,7 @@ gboolean nsbeos_openfile_open(beosWidget *widget, gpointer data) sprintf(url, "file://%s", filename); - browser_window_go(bw, url, 0, true); + browser_window_navigate(bw, url, 0, true); g_free(filename); free(url); -- cgit v1.2.3