From 7a3765a36bfa1c54f8bc77c761a741d5529addcf Mon Sep 17 00:00:00 2001 From: Jeffas Date: Fri, 26 Jul 2019 09:46:15 +0100 Subject: [PATCH] Fix tabstrip over-drawing when not enough space Tabstrip didn't take into account the width of the context. Now, it just shows as many tabs as can fit and truncates the last one if necessary. In future it probably would be best to ensure that the selected tab is rendered on the screen. --- lib/ui/tab.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/ui/tab.go b/lib/ui/tab.go index b6e7bd5..90c7ce9 100644 --- a/lib/ui/tab.go +++ b/lib/ui/tab.go @@ -167,8 +167,15 @@ func (strip *TabStrip) Draw(ctx *Context) { if strip.Selected == i { style = tcell.StyleDefault } - trunc := runewidth.Truncate(tab.Name, 32, "…") + tabWidth := 32 + if ctx.Width()-x < tabWidth { + tabWidth = ctx.Width() - x - 2 + } + trunc := runewidth.Truncate(tab.Name, tabWidth, "…") x += ctx.Printf(x, 0, style, " %s ", trunc) + if x >= ctx.Width() { + break + } } style := tcell.StyleDefault.Reverse(true) ctx.Fill(x, 0, ctx.Width()-x, 1, ' ', style)