Cleaner implementation of max_tab_title_length

Ensures that tab decorations are not affected
This commit is contained in:
Kovid Goyal 2022-11-29 23:19:34 +05:30
parent fbd19f3bde
commit 722a1020fa
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 9 additions and 9 deletions

View File

@ -1157,7 +1157,7 @@ this is rendered.
opt('tab_title_max_length', '0', option_type='positive_int',
long_text='''
The maximum number of cells that can be used to render a tab. A value of zero
The maximum number of cells that can be used to render the text in a tab. A value of zero
means that no limit is applied.
'''
)

View File

@ -220,6 +220,8 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData, index: int,
'title': tab.title,
'tab': ta,
}
if draw_data.max_tab_title_length > 0:
max_title_length = min(max_title_length, draw_data.max_tab_title_length)
ColorFormatter.draw_data = draw_data
ColorFormatter.tab_data = tab
eval_locals = {
@ -251,7 +253,13 @@ def draw_title(draw_data: DrawData, screen: Screen, tab: TabBarData, index: int,
except Exception as e:
report_template_failure(template, str(e))
title = tab.title
before_draw = screen.cursor.x
draw_attributed_string(title, screen)
if draw_data.max_tab_title_length > 0:
x_limit = before_draw + draw_data.max_tab_title_length
if screen.cursor.x > x_limit:
screen.cursor.x = x_limit - 1
screen.draw('')
DrawTabFunc = Callable[[DrawData, Screen, TabBarData, int, int, int, bool, ExtraData], int]
@ -286,8 +294,6 @@ def draw_tab_with_slant(
else:
draw_sep(left_sep)
screen.draw(' ')
if draw_data.max_tab_title_length > 0:
max_tab_length = min(draw_data.max_tab_title_length, max_tab_length)
draw_title(draw_data, screen, tab, index, max_tab_length)
extra = screen.cursor.x - before - max_tab_length
if extra >= 0:
@ -309,8 +315,6 @@ def draw_tab_with_separator(
) -> int:
if draw_data.leading_spaces:
screen.draw(' ' * draw_data.leading_spaces)
if draw_data.max_tab_title_length > 0:
max_tab_length = min(draw_data.max_tab_title_length, max_tab_length)
draw_title(draw_data, screen, tab, index, max_tab_length)
trailing_spaces = min(max_tab_length - 1, draw_data.trailing_spaces)
max_tab_length -= trailing_spaces
@ -342,8 +346,6 @@ def draw_tab_with_fade(
screen.cursor.bg = bg
screen.draw(' ')
screen.cursor.bg = orig_bg
if draw_data.max_tab_title_length > 0:
max_tab_length = min(draw_data.max_tab_title_length, max_tab_length)
draw_title(draw_data, screen, tab, index, max(0, max_tab_length - 8))
extra = screen.cursor.x - before - max_tab_length
if extra > 0:
@ -396,8 +398,6 @@ def draw_tab_with_powerline(
start_draw = 1
screen.cursor.bg = tab_bg
if draw_data.max_tab_title_length > 0:
max_tab_length = min(draw_data.max_tab_title_length, max_tab_length)
if min_title_length >= max_tab_length:
screen.draw('')
else: