From da7ac31258be078f193d3590414c5aa6b067018d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 12 Aug 2025 16:00:24 +0530 Subject: [PATCH] Sort active tabs instead of directly using active_tab_history Ensures current active tab is preserved and remaining tabs are created in active history order --- kitty/tabs.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/kitty/tabs.py b/kitty/tabs.py index cf3f00220..8bf9a26fd 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -1187,12 +1187,15 @@ class TabManager: # {{{ } def serialize_state_as_session(self) -> list[str]: - tmap = {tab.id: tab for tab in self} ans = [] - for tab_id in self.active_tab_history or tmap: - tab = tmap.get(tab_id) - if tab is not None: - ans.extend(tab.serialize_state_as_session()) + hmap = {tab_id: i for i, tab_id in enumerate(self.active_tab_history)} + at = self.active_tab + def skey(tab: Tab) -> int: + if tab is at: + return len(self.active_tab_history) + 1 + return hmap.get(tab.id, -1) + for tab in sorted(self, key=skey): + ans.extend(tab.serialize_state_as_session()) if ans: prefix = ['new_os_window'] if self.wm_class: