summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2022-06-14 13:15:20 +0200
committerFlorian Bruhin <me@the-compiler.org>2022-06-14 13:15:20 +0200
commite43a34f370cc7f4ffa26f6db7ab17790133fca75 (patch)
tree36a77cf6b0a7ef0adc42f401f2d1238d09e9fecf
parent05c62c9532c5dc1c5342b78fbaa9e4f9e1896c93 (diff)
parent7706ce7f1a955b283f704fe38da159f090867406 (diff)
downloadqutebrowser-e43a34f370cc7f4ffa26f6db7ab17790133fca75.tar.gz
qutebrowser-e43a34f370cc7f4ffa26f6db7ab17790133fca75.zip
Merge remote-tracking branch 'origin/pr/7184'
-rw-r--r--qutebrowser/browser/browsertab.py3
-rw-r--r--qutebrowser/browser/webengine/webenginetab.py3
-rw-r--r--qutebrowser/browser/webkit/webkittab.py3
-rw-r--r--qutebrowser/misc/sessions.py30
4 files changed, 31 insertions, 8 deletions
diff --git a/qutebrowser/browser/browsertab.py b/qutebrowser/browser/browsertab.py
index e87ac806e..81915e11c 100644
--- a/qutebrowser/browser/browsertab.py
+++ b/qutebrowser/browser/browsertab.py
@@ -730,6 +730,9 @@ class AbstractHistory:
def current_idx(self) -> int:
raise NotImplementedError
+ def current_item(self) -> Union['QWebHistoryItem', 'QWebEngineHistoryItem']:
+ raise NotImplementedError
+
def back(self, count: int = 1) -> None:
"""Go back in the tab's history."""
self._check_count(count)
diff --git a/qutebrowser/browser/webengine/webenginetab.py b/qutebrowser/browser/webengine/webenginetab.py
index 916164ba7..8057d5800 100644
--- a/qutebrowser/browser/webengine/webenginetab.py
+++ b/qutebrowser/browser/webengine/webenginetab.py
@@ -691,6 +691,9 @@ class WebEngineHistory(browsertab.AbstractHistory):
def current_idx(self):
return self._history.currentItemIndex()
+ def current_item(self):
+ return self._history.currentItem()
+
def can_go_back(self):
return self._history.canGoBack()
diff --git a/qutebrowser/browser/webkit/webkittab.py b/qutebrowser/browser/webkit/webkittab.py
index 2faf93a32..0a1ac18f2 100644
--- a/qutebrowser/browser/webkit/webkittab.py
+++ b/qutebrowser/browser/webkit/webkittab.py
@@ -708,6 +708,9 @@ class WebKitHistory(browsertab.AbstractHistory):
def current_idx(self):
return self._history.currentItemIndex()
+ def current_item(self):
+ return self._history.currentItem()
+
def can_go_back(self):
return self._history.canGoBack()
diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py
index a28f3a848..f8842ca6b 100644
--- a/qutebrowser/misc/sessions.py
+++ b/qutebrowser/misc/sessions.py
@@ -242,7 +242,7 @@ class SessionManager(QObject):
return data
- def _save_tab(self, tab, active):
+ def _save_tab(self, tab, active, no_history=False):
"""Get a dict with data for a single tab.
Args:
@@ -252,7 +252,13 @@ class SessionManager(QObject):
data: _JsonType = {'history': []}
if active:
data['active'] = True
- for idx, item in enumerate(tab.history):
+
+ if no_history:
+ history = [tab.history.current_item()]
+ else:
+ history = tab.history
+
+ for idx, item in enumerate(history):
qtutils.ensure_valid(item)
item_data = self._save_tab_item(tab, idx, item)
if item.url().scheme() == 'qute' and item.url().host() == 'back':
@@ -264,7 +270,7 @@ class SessionManager(QObject):
data['history'].append(item_data)
return data
- def _save_all(self, *, only_window=None, with_private=False):
+ def _save_all(self, *, only_window=None, with_private=False, no_history=False):
"""Get a dict with data for all windows/tabs."""
data: _JsonType = {'windows': []}
if only_window is not None:
@@ -295,7 +301,8 @@ class SessionManager(QObject):
win_data['private'] = True
for i, tab in enumerate(tabbed_browser.widgets()):
active = i == tabbed_browser.widget.currentIndex()
- win_data['tabs'].append(self._save_tab(tab, active))
+ win_data['tabs'].append(self._save_tab(tab, active,
+ no_history=no_history))
data['windows'].append(win_data)
return data
@@ -316,7 +323,7 @@ class SessionManager(QObject):
return name
def save(self, name, last_window=False, load_next_time=False,
- only_window=None, with_private=False):
+ only_window=None, with_private=False, no_history=False):
"""Save a named session.
Args:
@@ -327,6 +334,7 @@ class SessionManager(QObject):
load_next_time: If set, prepares this session to be load next time.
only_window: If set, only tabs in the specified window is saved.
with_private: Include private windows.
+ no_history: Don't save tab history
Return:
The name of the saved session.
@@ -342,7 +350,8 @@ class SessionManager(QObject):
return None
else:
data = self._save_all(only_window=only_window,
- with_private=with_private)
+ with_private=with_private,
+ no_history=no_history)
log.sessions.vdebug( # type: ignore[attr-defined]
"Saving data: {}".format(data))
try:
@@ -576,12 +585,14 @@ def session_load(name: str, *,
@cmdutils.argument('name', completion=miscmodels.session)
@cmdutils.argument('win_id', value=cmdutils.Value.win_id)
@cmdutils.argument('with_private', flag='p')
+@cmdutils.argument('no_history', flag='n')
def session_save(name: ArgType = default, *,
current: bool = False,
quiet: bool = False,
force: bool = False,
only_active_window: bool = False,
with_private: bool = False,
+ no_history: bool = False,
win_id: int = None) -> None:
"""Save a session.
@@ -593,6 +604,7 @@ def session_save(name: ArgType = default, *,
force: Force saving internal sessions (starting with an underline).
only_active_window: Saves only tabs of the currently active window.
with_private: Include private windows.
+ no_history: Don't store tab history
"""
if not isinstance(name, Sentinel) and name.startswith('_') and not force:
raise cmdutils.CommandError("{} is an internal session, use --force "
@@ -605,9 +617,11 @@ def session_save(name: ArgType = default, *,
try:
if only_active_window:
name = session_manager.save(name, only_window=win_id,
- with_private=True)
+ with_private=True,
+ no_history=no_history)
else:
- name = session_manager.save(name, with_private=with_private)
+ name = session_manager.save(name, with_private=with_private,
+ no_history=no_history)
except SessionError as e:
raise cmdutils.CommandError("Error while saving session: {}".format(e))
else: