From 49c51b825a7435a750e64f7f0ebd09166e8559df Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 1 Apr 2021 16:16:18 +0200 Subject: [PATCH] patch 8.2.2685: custom statusline not drawn correctly with WinBar Problem: Custom statusline not drawn correctly with WinBar. Solution: Also adjust the column for the custom status line. (Yee Cheng Chin, closes #8047) --- src/drawscreen.c | 2 +- src/proto/drawscreen.pro | 1 + src/screen.c | 2 +- ..._winbar_not_visible_custom_statusline.dump | 10 ++++++++++ src/testdir/test_winbar.vim | 20 +++++++++++++++++++ src/version.c | 2 ++ 6 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump diff --git a/src/drawscreen.c b/src/drawscreen.c index 051d94b23..0e36e7917 100644 --- a/src/drawscreen.c +++ b/src/drawscreen.c @@ -380,7 +380,7 @@ update_screen(int type_arg) /* * Return the row for drawing the statusline and the ruler of window "wp". */ - static int + int statusline_row(win_T *wp) { #if defined(FEAT_PROP_POPUP) diff --git a/src/proto/drawscreen.pro b/src/proto/drawscreen.pro index 7414fa093..528c8b219 100644 --- a/src/proto/drawscreen.pro +++ b/src/proto/drawscreen.pro @@ -1,5 +1,6 @@ /* drawscreen.c */ int update_screen(int type_arg); +int statusline_row(win_T *wp); void showruler(int always); void win_redr_ruler(win_T *wp, int always, int ignore_pum); void after_updating_screen(int may_resize_shell); diff --git a/src/screen.c b/src/screen.c index d219b13c3..9d5d4df98 100644 --- a/src/screen.c +++ b/src/screen.c @@ -1248,7 +1248,7 @@ win_redr_custom( } else { - row = W_WINROW(wp) + wp->w_height; + row = statusline_row(wp); fillchar = fillchar_status(&attr, wp); maxwidth = wp->w_width; diff --git a/src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump b/src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump new file mode 100644 index 000000000..9eff5ba3e --- /dev/null +++ b/src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump @@ -0,0 +1,10 @@ +|a+1&#ffffff0|b|c|d|e| @69 +> +0&&@74 +|~+0#4040ff13&| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|~| @73 +|a+3#0000000&|b|c|d|e| @69 +| +0&&@74 diff --git a/src/testdir/test_winbar.vim b/src/testdir/test_winbar.vim index 2cbdd013c..92da3128f 100644 --- a/src/testdir/test_winbar.vim +++ b/src/testdir/test_winbar.vim @@ -141,4 +141,24 @@ func Test_winbar_not_visible() call delete('XtestWinbarNotVisble') endfunction +func Test_winbar_not_visible_custom_statusline() + CheckScreendump + + let lines =<< trim END + split + nnoremenu WinBar.Test :test + set winminheight=0 + set statusline=abcde + wincmd j + wincmd _ + END + call writefile(lines, 'XtestWinbarNotVisble') + let buf = RunVimInTerminal('-S XtestWinbarNotVisble', #{rows: 10}) + call VerifyScreenDump(buf, 'Test_winbar_not_visible_custom_statusline', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('XtestWinbarNotVisble') +endfunction + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c index 943a6f601..8a6e1642a 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2685, /**/ 2684, /**/ -- 2.40.0