From 67ad2c439530b178a2529bfc346620367d6eab02 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 5 Dec 2016 21:02:03 +0530 Subject: [PATCH] Ensure Tab.destroy is only called once --- kitty/boss.py | 5 ++++- kitty/tabs.py | 13 +++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/kitty/boss.py b/kitty/boss.py index a4a22f25f..0702a627c 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -67,7 +67,6 @@ class Boss(Thread): Thread.__init__(self, name='ChildMonitor') self.cursor_blinking = True self.glfw_window_title = None - self.current_tab_bar_height = 0 self.action_queue = Queue() self.pending_resize = True self.resize_gl_viewport = False @@ -116,6 +115,10 @@ class Boss(Thread): self.glfw_window.set_should_close(True) glfw_post_empty_event() + @property + def current_tab_bar_height(self): + return self.tab_manager.tab_bar_height + def __iter__(self): return iter(self.tab_manager) diff --git a/kitty/tabs.py b/kitty/tabs.py index 473ffc529..25c34dc6a 100644 --- a/kitty/tabs.py +++ b/kitty/tabs.py @@ -5,7 +5,7 @@ from collections import deque from .child import Child -from .constants import get_boss, appname, shell_path +from .constants import get_boss, appname, shell_path, cell_size from .fast_data_types import glfw_post_empty_event from .layout import all_layouts from .borders import Borders @@ -118,9 +118,10 @@ class Tab: return window in self.windows def destroy(self): - for w in self.windows: - w.destroy() - del self.windows + if hasattr(self, 'windows'): + for w in self.windows: + w.destroy() + del self.windows def render(self): self.borders.render(get_boss().borders_program) @@ -142,6 +143,10 @@ class TabManager: def active_tab(self): return self.tabs[0] if self.tabs else None + @property + def tab_bar_height(self): + return 0 if len(self.tabs) < 1 else cell_size.height + def remove(self, tab): ' Must be called in the GUI thread ' self.tabs.remove(tab)