# HG changeset patch # User Bram Moolenaar # Date 1617287405 -7200 # Node ID 8938c0c98149d726bcdb61cb2118be69bdc4f6dc # Parent 9f2f0ae1db47bc151d535a2e9b5893d49b055649 patch 8.2.2685: custom statusline not drawn correctly with WinBar Commit: https://github.com/vim/vim/commit/49c51b825a7435a750e64f7f0ebd09166e8559df Author: Bram Moolenaar Date: Thu Apr 1 16:16:18 2021 +0200 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) diff --git a/src/drawscreen.c b/src/drawscreen.c --- 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 --- 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 --- 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 --- /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 --- 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 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2685, +/**/ 2684, /**/ 2683,