From d364a1122e23149a6fb2e060fe5f7a0dbb752b20 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 6 Jul 2025 20:04:03 +0900 Subject: [PATCH] Fix regression where header is not updated --- src/terminal.go | 15 +++++++++------ test/test_core.rb | 5 ++++- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/terminal.go b/src/terminal.go index 634d7859..adffbab5 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -2901,16 +2901,19 @@ func (t *Terminal) resizeIfNeeded() bool { // Check if the header borders are used and header has changed allHeaderLines := t.visibleHeaderLines() primaryHeaderLines := allHeaderLines - if t.hasHeaderLinesWindow() { + needHeaderWindow := t.hasHeaderWindow() + needHeaderLinesWindow := t.hasHeaderLinesWindow() + if needHeaderLinesWindow { primaryHeaderLines -= t.headerLines } // FIXME: Full redraw is triggered if there are too many lines in the header // so that the header window cannot display all of them. - needHeaderLinesWindow := t.hasHeaderLinesWindow() - if (t.headerBorderShape.Visible() || needHeaderLinesWindow) && - (t.headerWindow == nil && primaryHeaderLines > 0 || t.headerWindow != nil && primaryHeaderLines != t.headerWindow.Height()) || - needHeaderLinesWindow && (t.headerLinesWindow == nil || t.headerLinesWindow != nil && t.headerLines != t.headerLinesWindow.Height()) || - !needHeaderLinesWindow && t.headerLinesWindow != nil { + if (needHeaderWindow && t.headerWindow == nil) || + (!needHeaderWindow && t.headerWindow != nil) || + (needHeaderWindow && t.headerWindow != nil && primaryHeaderLines != t.headerWindow.Height()) || + (needHeaderLinesWindow && t.headerLinesWindow == nil) || + (!needHeaderLinesWindow && t.headerLinesWindow != nil) || + (needHeaderLinesWindow && t.headerLinesWindow != nil && t.headerLines != t.headerLinesWindow.Height()) { t.printAll() return true } diff --git a/test/test_core.rb b/test/test_core.rb index 08d6c05b..cf4cd237 100644 --- a/test/test_core.rb +++ b/test/test_core.rb @@ -1930,7 +1930,10 @@ class TestCore < TestInteractive def test_change_header_on_header_window tmux.send_keys %(seq 100 | #{FZF} --list-border --input-border --bind 'start:change-header(foo),space:change-header(bar)'), :Enter - tmux.until { |lines| assert lines.any_include?('foo') } + tmux.until do |lines| + assert lines.any_include?('100/100') + assert lines.any_include?('foo') + end tmux.send_keys :Space tmux.until { |lines| assert lines.any_include?('bar') } end