summaryrefslogtreecommitdiff
path: root/desktop/browser_history.c
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2019-08-21 20:33:52 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2019-08-21 20:33:52 +0100
commitb67bbe3280ebdfdfdc4731d977ad7a38b9608c2a (patch)
tree6805804e2c33f8bfbffddc276ba46f60ad9009ea /desktop/browser_history.c
parent6bce06b91f5efe51531aa4923137488cf21df132 (diff)
downloadnetsurf-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_history.c')
-rw-r--r--desktop/browser_history.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/desktop/browser_history.c b/desktop/browser_history.c
index c4ff75079..5b44670c1 100644
--- a/desktop/browser_history.c
+++ b/desktop/browser_history.c
@@ -37,6 +37,7 @@
#include "content/hlcache.h"
#include "content/urldb.h"
#include "netsurf/bitmap.h"
+#include "utils/corestrings.h"
#include "desktop/gui_internal.h"
#include "desktop/browser_private.h"
@@ -519,6 +520,24 @@ void browser_window_history_destroy(struct browser_window *bw)
/* exported interface documented in desktop/browser_history.h */
nserror browser_window_history_back(struct browser_window *bw, bool new_window)
{
+ if (bw != NULL && bw->internal_nav) {
+ /* All internal nav back operations ignore new_window */
+ if (bw->current_parameters.url != NULL) {
+ /* There are some internal parameters, restart from there */
+ return browser_window__reload_current_parameters(bw);
+ } else {
+ /* No internal parameters, just navigate to about:blank */
+ return browser_window_navigate(
+ bw,
+ corestring_nsurl_about_blank,
+ NULL, /* Referer */
+ BW_NAVIGATE_HISTORY,
+ NULL, /* Post */
+ NULL, /* Post */
+ NULL /* parent fetch */);
+ }
+ }
+
if (!bw || !bw->history || !bw->history->current ||
!bw->history->current->back) {
return NSERROR_BAD_PARAMETER;