Handle removal of tabs
This commit is contained in:
parent
17bef1722f
commit
aca13ba05e
@ -225,6 +225,10 @@ class Boss(Thread):
|
|||||||
self.pending_resize = False
|
self.pending_resize = False
|
||||||
glfw_post_empty_event()
|
glfw_post_empty_event()
|
||||||
|
|
||||||
|
def tabbar_visibility_changed(self):
|
||||||
|
self.tab_manager.resize(only_tabs=True)
|
||||||
|
glfw_post_empty_event()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def active_tab(self):
|
def active_tab(self):
|
||||||
return self.tab_manager.active_tab
|
return self.tab_manager.active_tab
|
||||||
|
|||||||
@ -169,10 +169,12 @@ class TabManager:
|
|||||||
self.close_fg = as_rgb(0xff << 16)
|
self.close_fg = as_rgb(0xff << 16)
|
||||||
self.can_render = False
|
self.can_render = False
|
||||||
|
|
||||||
def resize(self):
|
def resize(self, only_tabs=False):
|
||||||
self.can_render = False
|
|
||||||
for tab in self.tabs:
|
for tab in self.tabs:
|
||||||
tab.relayout()
|
tab.relayout()
|
||||||
|
if only_tabs:
|
||||||
|
return
|
||||||
|
self.can_render = False
|
||||||
ncells = viewport_size.width // cell_size.width
|
ncells = viewport_size.width // cell_size.width
|
||||||
s = Screen(None, 1, ncells)
|
s = Screen(None, 1, ncells)
|
||||||
s.reset_mode(DECAWM)
|
s.reset_mode(DECAWM)
|
||||||
@ -208,8 +210,13 @@ class TabManager:
|
|||||||
|
|
||||||
def remove(self, tab):
|
def remove(self, tab):
|
||||||
' Must be called in the GUI thread '
|
' Must be called in the GUI thread '
|
||||||
|
needs_resize = len(self.tabs) == 2
|
||||||
self.tabs.remove(tab)
|
self.tabs.remove(tab)
|
||||||
|
self.active_tab_idx = max(0, min(self.active_tab_idx, len(self.tabs) - 1))
|
||||||
|
self.tabbar_dirty = True
|
||||||
tab.destroy()
|
tab.destroy()
|
||||||
|
if needs_resize:
|
||||||
|
queue_action(get_boss().tabbar_visibility_changed)
|
||||||
|
|
||||||
def update_tab_bar_data(self, sprites):
|
def update_tab_bar_data(self, sprites):
|
||||||
s = self.tab_bar_screen
|
s = self.tab_bar_screen
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user