summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2024-01-28 18:48:00 +1300
committertoofar <toofar@spalge.com>2024-02-08 22:40:23 +1300
commit89502baa203668c3e3d53be6185c31255a314d7d (patch)
treef636a5f3b70c709cd6aaa073cf0d39447be049b4
parent8637347641012a68482310bf6274d6cbbc4fa38c (diff)
downloadqutebrowser-89502baa203668c3e3d53be6185c31255a314d7d.tar.gz
qutebrowser-89502baa203668c3e3d53be6185c31255a314d7d.zip
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
-rw-r--r--qutebrowser/misc/sessions.py11
1 files changed, 10 insertions, 1 deletions
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,