diff --git a/docs/changelog.rst b/docs/changelog.rst index e11c93ccd..076092473 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -21,6 +21,9 @@ To update |kitty|, :doc:`follow the instructions `. - Fix tab activity symbol not appearing if no other changes happen in tab bar even when there is activity in a tab (:iss:`3571`) +- Fix focus changes not being sent to windows when focused window changes + because of the previously focused window being closed (:iss:`3571`) + 0.20.2 [2021-04-28] ---------------------- diff --git a/kitty/boss.py b/kitty/boss.py index d89a1418e..42a6d5a08 100755 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -436,6 +436,7 @@ class Boss: mark_os_window_for_close(src_tab.os_window_id) def on_child_death(self, window_id: int) -> None: + prev_active_window = self.active_window window = self.window_id_map.pop(window_id, None) if window is None: return @@ -464,6 +465,12 @@ class Boss: import traceback traceback.print_exc() window.action_on_close = window.action_on_removal = None + window = self.active_window + if window is not prev_active_window: + if prev_active_window is not None: + prev_active_window.focus_changed(False) + if window is not None: + window.focus_changed(True) def close_window(self, window: Optional[Window] = None) -> None: window = window or self.active_window