diff options
-rw-r--r-- | qutebrowser/mainwindow/tabbedbrowser.py | 16 | ||||
-rw-r--r-- | qutebrowser/mainwindow/treetabbedbrowser.py | 19 | ||||
-rw-r--r-- | qutebrowser/misc/sessions.py | 11 |
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, |