diff options
author | toofar <toofar@spalge.com> | 2024-01-28 18:48:00 +1300 |
---|---|---|
committer | toofar <toofar@spalge.com> | 2024-02-08 22:40:23 +1300 |
commit | 89502baa203668c3e3d53be6185c31255a314d7d (patch) | |
tree | f636a5f3b70c709cd6aaa073cf0d39447be049b4 | |
parent | 8637347641012a68482310bf6274d6cbbc4fa38c (diff) | |
download | qutebrowser-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.py | 11 |
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, |