mirror of
https://github.com/kovidgoyal/kitty.git
synced 2024-09-20 19:19:41 +03:00
Fix tab bar borders not being blanked
This commit is contained in:
parent
cbf0959fbf
commit
a4715de5dc
@ -3,12 +3,13 @@
|
||||
# License: GPL v3 Copyright: 2016, Kovid Goyal <kovid at kovidgoyal.net>
|
||||
|
||||
from ctypes import addressof
|
||||
from itertools import chain
|
||||
from threading import Lock
|
||||
|
||||
from .constants import viewport_size, GLfloat, GLint, GLuint
|
||||
from .fast_data_types import glUniform3fv, GL_TRIANGLE_FAN, glMultiDrawArrays
|
||||
from .utils import get_dpi
|
||||
from .constants import GLfloat, GLint, GLuint, viewport_size
|
||||
from .fast_data_types import GL_TRIANGLE_FAN, glMultiDrawArrays, glUniform3fv
|
||||
from .shaders import ShaderProgram
|
||||
from .utils import get_dpi
|
||||
|
||||
|
||||
def as_color(c):
|
||||
@ -71,9 +72,9 @@ def __init__(self, opts):
|
||||
*as_color(opts.inactive_border_color)
|
||||
)
|
||||
|
||||
def __call__(self, windows, active_window, current_layout, draw_window_borders=True):
|
||||
def __call__(self, windows, active_window, current_layout, extra_blank_rects, draw_window_borders=True):
|
||||
rects = []
|
||||
for br in current_layout.blank_rects:
|
||||
for br in chain(current_layout.blank_rects, extra_blank_rects):
|
||||
rects.extend(as_rect(*br))
|
||||
if draw_window_borders and self.border_width > 0:
|
||||
bw = self.border_width
|
||||
|
@ -12,7 +12,7 @@
|
||||
from .constants import get_boss, appname, shell_path, cell_size, queue_action, viewport_size, WindowGeometry, GLuint
|
||||
from .fast_data_types import glfw_post_empty_event, Screen, DECAWM, DATA_CELL_SIZE, ColorProfile
|
||||
from .char_grid import calculate_gl_geometry, render_cells
|
||||
from .layout import all_layouts
|
||||
from .layout import all_layouts, Rect
|
||||
from .utils import color_as_int
|
||||
from .borders import Borders
|
||||
from .window import Window
|
||||
@ -79,7 +79,9 @@ def relayout(self):
|
||||
self.relayout_borders()
|
||||
|
||||
def relayout_borders(self):
|
||||
self.borders(self.windows, self.active_window, self.current_layout, self.current_layout.needs_window_borders and len(self.windows) > 1)
|
||||
tm = get_boss().tab_manager
|
||||
self.borders(self.windows, self.active_window, self.current_layout, tm.blank_rects,
|
||||
self.current_layout.needs_window_borders and len(self.windows) > 1)
|
||||
|
||||
def next_layout(self):
|
||||
if len(self.opts.enabled_layouts) > 1:
|
||||
@ -209,6 +211,7 @@ def __init__(self, opts, args, startup_session):
|
||||
self.color_profile.update_ansi_color_table(build_ansi_color_table(opts))
|
||||
self.default_fg = color_as_int(opts.inactive_tab_foreground)
|
||||
self.default_bg = color_as_int(opts.inactive_tab_background)
|
||||
self.tab_bar_blank_rects = ()
|
||||
|
||||
def as_rgb(x):
|
||||
return (x << 8) | 2
|
||||
@ -220,10 +223,10 @@ def as_rgb(x):
|
||||
self.layout_tab_bar()
|
||||
|
||||
def resize(self, only_tabs=False):
|
||||
for tab in self.tabs:
|
||||
tab.relayout()
|
||||
if not only_tabs:
|
||||
self.layout_tab_bar()
|
||||
for tab in self.tabs:
|
||||
tab.relayout()
|
||||
|
||||
def layout_tab_bar(self):
|
||||
self.can_render = False
|
||||
@ -236,9 +239,13 @@ def layout_tab_bar(self):
|
||||
self.tab_bar_screen = s
|
||||
self.tabbar_dirty = True
|
||||
margin = (viewport_size.width - ncells * cell_size.width) // 2
|
||||
self.window_geometry = WindowGeometry(
|
||||
self.window_geometry = g = WindowGeometry(
|
||||
margin, viewport_size.height - cell_size.height, viewport_size.width - margin, viewport_size.height, s.columns, s.lines)
|
||||
self.screen_geometry = calculate_gl_geometry(self.window_geometry)
|
||||
if margin > 0:
|
||||
self.tab_bar_blank_rects = (Rect(0, g.top, g.left, g.bottom), Rect(g.right - 1, g.top, viewport_size.width, g.bottom))
|
||||
else:
|
||||
self.tab_bar_blank_rects = ()
|
||||
self.screen_geometry = calculate_gl_geometry(g)
|
||||
self.screen = s
|
||||
self.can_render = True
|
||||
|
||||
@ -338,6 +345,12 @@ def activate_tab_at(self, x):
|
||||
queue_action(self.set_active_tab, i)
|
||||
return
|
||||
|
||||
@property
|
||||
def blank_rects(self):
|
||||
if len(self.tabs) < 2:
|
||||
return ()
|
||||
return self.tab_bar_blank_rects
|
||||
|
||||
def render(self, cell_program, sprites):
|
||||
if not self.can_render or len(self.tabs) < 2:
|
||||
return
|
||||
|
Loading…
Reference in New Issue
Block a user