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
--- 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,