diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-08-21 20:33:52 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-08-21 20:33:52 +0100 |
commit | b67bbe3280ebdfdfdc4731d977ad7a38b9608c2a (patch) | |
tree | 6805804e2c33f8bfbffddc276ba46f60ad9009ea /desktop/browser_window.c | |
parent | 6bce06b91f5efe51531aa4923137488cf21df132 (diff) | |
download | netsurf-b67bbe3280ebdfdfdc4731d977ad7a38b9608c2a.tar.gz netsurf-b67bbe3280ebdfdfdc4731d977ad7a38b9608c2a.tar.bz2 |
browser_window: Ensure that back works like 'back to safety'
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'desktop/browser_window.c')
-rw-r--r-- | desktop/browser_window.c | 51 |
1 files changed, 33 insertions, 18 deletions
diff --git a/desktop/browser_window.c b/desktop/browser_window.c index e44b928be..95131d1ac 100644 --- a/desktop/browser_window.c +++ b/desktop/browser_window.c @@ -864,23 +864,7 @@ browser_window__handle_ssl_query_response(bool proceed, void *pw) * nav to the old 'current' parameters, with any post data * stripped away */ - if (bw->current_parameters.post_urlenc != NULL) { - free(bw->current_parameters.post_urlenc); - bw->current_parameters.post_urlenc = NULL; - } - - if (bw->current_parameters.post_multipart != NULL) { - fetch_multipart_data_destroy(bw->current_parameters.post_multipart); - bw->current_parameters.post_multipart = NULL; - } - - bw->current_parameters.flags &= ~BW_NAVIGATE_HISTORY; - bw->internal_nav = false; - - browser_window__free_fetch_parameters(&bw->loading_parameters); - memcpy(&bw->loading_parameters, &bw->current_parameters, sizeof(bw->loading_parameters)); - memset(&bw->current_parameters, 0, sizeof(bw->current_parameters)); - return browser_window__navigate_internal(bw, &bw->loading_parameters); + return browser_window__reload_current_parameters(bw); } /* We're processing a "proceed" attempt from the form */ @@ -1694,7 +1678,9 @@ browser_window_refresh_url_bar_internal(struct browser_window *bw, nsurl *url) /* Not root window or no gui window so do not set a URL */ return NSERROR_OK; } - + + NSLOG(netsurf, CRITICAL, "Updating the URL to %s", nsurl_access(url)); + return guit->window->set_url(bw->window, url); } @@ -4275,6 +4261,10 @@ void browser_window_page_drag_start(struct browser_window *bw, int x, int y) /* exported interface documented in netsurf/browser_window.h */ bool browser_window_back_available(struct browser_window *bw) { + if (bw != NULL && bw->internal_nav) { + /* Internal nav, back is possible */ + return true; + } return (bw && bw->history && browser_window_history_back_available(bw)); } @@ -4375,3 +4365,28 @@ browser_window_console_log(struct browser_window *bw, return NSERROR_OK; } + +/* Exported interface, documented in browser_private.h */ +nserror +browser_window__reload_current_parameters(struct browser_window *bw) +{ + assert(bw != NULL); + + if (bw->current_parameters.post_urlenc != NULL) { + free(bw->current_parameters.post_urlenc); + bw->current_parameters.post_urlenc = NULL; + } + + if (bw->current_parameters.post_multipart != NULL) { + fetch_multipart_data_destroy(bw->current_parameters.post_multipart); + bw->current_parameters.post_multipart = NULL; + } + + bw->current_parameters.flags &= ~BW_NAVIGATE_HISTORY; + bw->internal_nav = false; + + browser_window__free_fetch_parameters(&bw->loading_parameters); + memcpy(&bw->loading_parameters, &bw->current_parameters, sizeof(bw->loading_parameters)); + memset(&bw->current_parameters, 0, sizeof(bw->current_parameters)); + return browser_window__navigate_internal(bw, &bw->loading_parameters); +} |