diff --git a/kitty/boss.py b/kitty/boss.py index 5d5713421..dac4758fb 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -263,11 +263,10 @@ class Boss: self.child_monitor.shutdown() wakeup() self.child_monitor.join() - for t in self.tab_manager: - t.destroy() - del self.tab_manager + self.tab_manager.destroy() destroy_sprite_map() destroy_global_data() + del self.tab_manager del self.glfw_window def paste_to_active_window(self, text): diff --git a/kitty/tabs.py b/kitty/tabs.py index 7a0e529be..7e3283b4b 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -285,6 +285,10 @@ class TabBar: # {{{ self.cell_ranges = cr glfw_post_empty_event() + def destroy(self): + self.screen.reset_callbacks() + del self.screen + def tab_at(self, x): x = (x - self.window_geometry.left) // self.cell_width for i, (a, b) in enumerate(self.cell_ranges): @@ -412,4 +416,11 @@ class TabManager: # {{{ if len(self.tabs) < 2: return self.tab_bar.render() + + def destroy(self): + for t in self: + t.destroy() + self.tab_bar.destroy() + del self.tab_bar + del self.refresh_sprite_positions # }}}