From 0789e62b11dfe02ca0fbdf85b11165e0d833b8b6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 14 Aug 2025 20:11:43 +0530 Subject: [PATCH] Fix adding of tabs to existing OS Window in create_session --- kitty/boss.py | 2 +- kitty/session.py | 2 +- kitty/tabs.py | 15 ++++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/kitty/boss.py b/kitty/boss.py index 53ac994b3..7a584eb84 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -2993,7 +2993,7 @@ def done2(target_window_id: int, self: Boss) -> None: return q if isinstance(q, Window) else None @ac('misc', 'Switch to the specified session, creating it if not already present.') - def goto_session(self, cmdline: list[str]) -> None: + def goto_session(self, *cmdline: str) -> None: goto_session(self, cmdline) @ac('tab', 'Interactively select a tab to switch to') diff --git a/kitty/session.py b/kitty/session.py index 6e110e19d..5a6533ea5 100644 --- a/kitty/session.py +++ b/kitty/session.py @@ -340,7 +340,7 @@ def create_session(boss: BossType, path: str) -> None: if tm is None: boss.add_os_window(s) else: - boss.add_os_window(s, os_window_id=tm.os_window_id) + tm.add_tabs_from_session(s) else: boss.add_os_window(s) diff --git a/kitty/tabs.py b/kitty/tabs.py index 80ce2cd12..476a8040c 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -989,11 +989,16 @@ def __init__(self, os_window_id: int, args: CLIOptions, wm_class: str, wm_name: self._active_tab_idx = 0 if startup_session is not None: - for t in startup_session.tabs: - tab = Tab(self, session_tab=t) - tab.created_in_session_name = startup_session.session_name - self._add_tab(tab) - self._set_active_tab(max(0, min(startup_session.active_tab_idx, len(self.tabs) - 1))) + self.add_tabs_from_session(startup_session) + + def add_tabs_from_session(self, session: SessionType) -> None: + before = len(self.tabs) + for t in session.tabs: + tab = Tab(self, session_tab=t) + tab.created_in_session_name = session.session_name + self._add_tab(tab) + num_added = len(self.tabs) - before + self._set_active_tab(max(0, min(num_added + session.active_tab_idx, len(self.tabs) - 1))) @property def active_tab_idx(self) -> int: