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_history.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_history.c')
-rw-r--r-- | desktop/browser_history.c | 19 |
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; |