diff --git a/qutebrowser/html/back.html b/qutebrowser/html/back.html
index 8a21f3d80..c28419a64 100644
--- a/qutebrowser/html/back.html
+++ b/qutebrowser/html/back.html
@@ -6,9 +6,17 @@ window.onload = function() {
var node = document.getElementsByTagName('h1')[0];
node.innerText = document.title = title;
};
-window.onfocus = function() {
- window.history.back();
-};
+setTimeout(function() {
+ /* drop first focus event, to avoid problems
+ (allow to go easily to newer history entries) */
+ var triggered = false;
+ window.onfocus = function() {
+ if (! triggered) {
+ triggered = true;
+ window.history.back();
+ }
+ };
+}, 1000);
{% endblock %}
{% block content %}
diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py
index c44b2ed8b..0e2b40c68 100644
--- a/qutebrowser/misc/sessions.py
+++ b/qutebrowser/misc/sessions.py
@@ -206,7 +206,9 @@ class SessionManager(QObject):
qtutils.ensure_valid(item)
item_data = self._save_tab_item(tab, idx, item)
if item_data['url'].startswith('qute://back'):
+ # dont add qute://back to the session file
if item_data.get('active', False) and data['history']:
+ # mark entry before qute://back as active
data['history'][-1]['active'] = True
else:
data['history'].append(item_data)
@@ -331,15 +333,7 @@ class SessionManager(QObject):
if config.val.session_lazy_restore and data['history']:
last = data['history'][-1]
- if not last['url'].startswith('qute://'):
- data['history'].append({
- 'title': last['title'],
- 'url': 'qute://back#' + last['title'],
- 'active': last.get('active', False)
- })
- last['active'] = False
-
- for histentry in data['history']:
+ for i, histentry in enumerate(data['history']):
user_data = {}
if 'zoom' in data:
@@ -363,6 +357,20 @@ class SessionManager(QObject):
if 'pinned' in histentry:
new_tab.data.pinned = histentry['pinned']
+ if (config.val.session_lazy_restore and
+ histentry.get('active', False) and
+ not histentry['url'].startswith('qute://back')):
+ # remove "active" mark and insert back page marked as active
+ data['history'].insert(
+ i + 1,
+ {
+ 'title': histentry['title'],
+ 'url': 'qute://back#' + histentry['title'],
+ 'active': True
+ })
+ histentry['active'] = False
+
+ print(histentry)
active = histentry.get('active', False)
url = QUrl.fromEncoded(histentry['url'].encode('ascii'))
if 'original-url' in histentry: