diff --git a/docs/changelog.rst b/docs/changelog.rst index 0d4bdb471..15ee4a5e4 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -184,6 +184,9 @@ Detailed list of changes - Wayland: Fix spurious key repeat events when some user defined callback takes a long time to execute (:iss:`9224`) +- When moving windows to a new tab/OS Window fix overlay windows not being + grouped with their parent windows (:iss:`9266`) + 0.44.0 [2025-11-03] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/kitty/boss.py b/kitty/boss.py index f350f7508..90ca93a60 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -3079,8 +3079,11 @@ class Boss: else: return + overlay_for = 0 for detached_window in src_tab.detach_window(window): - target_tab.attach_window(detached_window) + target_tab.attach_window(detached_window, overlay_for=overlay_for) + if overlay_for == 0: + overlay_for = detached_window.id self._cleanup_tab_after_window_removal(src_tab) target_tab.make_active() diff --git a/kitty/tabs.py b/kitty/tabs.py index 4c22ee15a..693d89ead 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -752,10 +752,10 @@ class Tab: # {{{ self.remove_window(w, destroy=False) return tuple(windows) - def attach_window(self, window: Window) -> None: + def attach_window(self, window: Window, overlay_for: int = 0) -> None: window.change_tab(self) attach_window(self.os_window_id, self.id, window.id) - self._add_window(window) + self._add_window(window, overlay_for=overlay_for) def set_active_window(self, x: Window | int, for_keep_focus: Window | None = None) -> None: self.windows.set_active_window_group_for(x, for_keep_focus=for_keep_focus)