summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qutebrowser/mainwindow/tabbedbrowser.py16
-rw-r--r--qutebrowser/mainwindow/treetabbedbrowser.py19
-rw-r--r--qutebrowser/misc/sessions.py11
3 files changed, 35 insertions, 11 deletions
diff --git a/qutebrowser/mainwindow/tabbedbrowser.py b/qutebrowser/mainwindow/tabbedbrowser.py
index 741123ed9..cbc1bac78 100644
--- a/qutebrowser/mainwindow/tabbedbrowser.py
+++ b/qutebrowser/mainwindow/tabbedbrowser.py
@@ -281,9 +281,11 @@ class TabbedBrowser(QWidget):
raise TabDeletedError("index is -1!")
return idx
- def widgets(self):
+ def widgets(self) -> List[browsertab.AbstractTab]:
"""Get a list of open tab widgets.
+ Consider using `tabs()` instead of this method.
+
We don't implement this as generator so we can delete tabs while
iterating over the list.
"""
@@ -296,6 +298,18 @@ class TabbedBrowser(QWidget):
widgets.append(widget)
return widgets
+ def tabs(
+ self,
+ include_hidden: bool = False, # pylint: disable=unused-argument
+ ) -> List[browsertab.AbstractTab]:
+ """Get a list of tabs in this browser.
+
+ Args:
+ include_hidden: Include child tabs which are not currently in the
+ tab bar.
+ """
+ return self.widgets()
+
def _update_window_title(self, field=None):
"""Change the window title to match the current tab.
diff --git a/qutebrowser/mainwindow/treetabbedbrowser.py b/qutebrowser/mainwindow/treetabbedbrowser.py
index 75a3c55f8..2ac18c337 100644
--- a/qutebrowser/mainwindow/treetabbedbrowser.py
+++ b/qutebrowser/mainwindow/treetabbedbrowser.py
@@ -195,6 +195,25 @@ class TreeTabbedBrowser(TabbedBrowser):
self.widget.tree_tab_update()
+ def tabs(
+ self,
+ include_hidden: bool = False,
+ ) -> List[browsertab.AbstractTab]:
+ """Get a list of tabs in this browser.
+
+ Args:
+ include_hidden: Include child tabs which are not currently in the
+ tab bar.
+ """
+ return [
+ node.value
+ for node
+ in self.widget.tree_root.traverse(
+ render_collapsed=include_hidden,
+ )
+ if node.value
+ ]
+
@pyqtSlot('QUrl')
@pyqtSlot('QUrl', bool)
@pyqtSlot('QUrl', bool, bool)
diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py
index 9f7254958..c9eb70b6b 100644
--- a/qutebrowser/misc/sessions.py
+++ b/qutebrowser/misc/sessions.py
@@ -321,16 +321,7 @@ class SessionManager(QObject):
win_data['private'] = True
win_data['tabs'] = []
- if tabbed_browser.is_treetabbedbrowser:
- tabs = [
- node.value
- for node
- in tabbed_browser.widget.tree_root.traverse()
- if node.value
- ]
- else:
- tabs = tabbed_browser.widgets()
- for tab in tabs:
+ for tab in tabbed_browser.tabs(include_hidden=True):
active = tab == tabbed_browser.current_tab()
tab_data = self._save_tab(tab,
active,