Mercurial > vim
changeset 24289:8938c0c98149 v8.2.2685
patch 8.2.2685: custom statusline not drawn correctly with WinBar
Commit: https://github.com/vim/vim/commit/49c51b825a7435a750e64f7f0ebd09166e8559df
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 01 Apr 2021 16:30:05 +0200 |
parents | 9f2f0ae1db47 |
children | b776f5c2e2c2 |
files | src/drawscreen.c src/proto/drawscreen.pro src/screen.c src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump src/testdir/test_winbar.vim src/version.c |
diffstat | 6 files changed, 35 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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);
--- 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;
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
--- 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