diff options
-rw-r--r-- | qutebrowser/browser/commands.py | 5 | ||||
-rw-r--r-- | qutebrowser/mainwindow/treetabbedbrowser.py | 10 |
2 files changed, 9 insertions, 6 deletions
diff --git a/qutebrowser/browser/commands.py b/qutebrowser/browser/commands.py index aa720a747..caba596c3 100644 --- a/qutebrowser/browser/commands.py +++ b/qutebrowser/browser/commands.py @@ -522,7 +522,10 @@ class CommandDispatcher: # third pass: remove tabs from old window, children first this time to # avoid having to re-parent things when traversing. if not keep: - for node in reversed(traversed): + for node in self._current_widget().node.traverse( + notree.TraverseOrder.POST_R, + render_collapsed=False, + ): self._tabbed_browser.close_tab(node.value, add_undo=False, transfer=True) diff --git a/qutebrowser/mainwindow/treetabbedbrowser.py b/qutebrowser/mainwindow/treetabbedbrowser.py index eacc9f4c3..2fe6d4c84 100644 --- a/qutebrowser/mainwindow/treetabbedbrowser.py +++ b/qutebrowser/mainwindow/treetabbedbrowser.py @@ -81,22 +81,22 @@ class TreeTabbedBrowser(TabbedBrowser): def _remove_tab(self, tab, *, add_undo=True, new_undo=True, crashed=False): """Handle children positioning after a tab is removed.""" - node = tab.node - # FIXME after the fixme in _add_undo_entry is resolved, no need - # to save descendents - descendents = tuple(node.traverse(render_collapsed=True)) if not tab.url().isEmpty() and tab.url().isValid() and add_undo: idx = self.widget.indexOf(tab) self._add_undo_entry(tab, idx, new_undo) + node = tab.node parent = node.parent if node.collapsed: # Collapsed nodes have already been removed from the TabWidget so # we can't ask super() to dispose of them and need to do it # ourselves. - for descendent in descendents: + for descendent in node.traverse( + order=notree.TraverseOrder.POST_R, + render_collapsed=True + ): descendent.parent = None descendent_tab = descendent.value descendent_tab.private_api.shutdown() |