From 89502baa203668c3e3d53be6185c31255a314d7d Mon Sep 17 00:00:00 2001 From: toofar Date: Sun, 28 Jan 2024 18:48:00 +1300 Subject: Fix loading collapsed tabs in tree sessions Tabs in collapsed tree groups aren't currently listed in tabbed_browser.widgets(), so they weren't getting saved. The tabs are still referenced by the tree structure though so grab them from there if we are dealing with a tree tabs window. I'm not too happy that we are now checking `if tabbed_browser.is_treetabbedbrowser` twice in the same methods. Seems a bit smelly, but oh well. Things we could do to help makes iterating tabs less error prone: * Make TreeTabbedBrowser.widgets() return widgets from the tree instead of the tab widget (would that break other use cases that called that that expected them to always be in the tab widget?) * Have tests to make sure this functionality doesn't break again in the future --- qutebrowser/misc/sessions.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/qutebrowser/misc/sessions.py b/qutebrowser/misc/sessions.py index fe8e7ba24..0ef4cf34b 100644 --- a/qutebrowser/misc/sessions.py +++ b/qutebrowser/misc/sessions.py @@ -321,7 +321,16 @@ class SessionManager(QObject): win_data['private'] = True win_data['tabs'] = [] - for i, tab in enumerate(tabbed_browser.widgets()): + 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 i, tab in enumerate(tabs): active = i == tabbed_browser.widget.currentIndex() tab_data = self._save_tab(tab, active, -- cgit v1.2.3-54-g00ecf