changeset 22464:b74bdd85bb26 v8.2.1780

patch 8.2.1780: statusline not updated when splitting windows Commit: https://github.com/vim/vim/commit/668008be66326ed9e5b1122abede34ed3d2de2d8 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Oct 1 19:06:35 2020 +0200 patch 8.2.1780: statusline not updated when splitting windows Problem: Statusline not updated when splitting windows. Solution: Call status_redraw_all(). (Jason Franklin, closes https://github.com/vim/vim/issues/5496)
author Bram Moolenaar <Bram@vim.org>
date Thu, 01 Oct 2020 19:15:03 +0200
parents 05c3310118da
children 95479bb328d0
files src/testdir/test_statusline.vim src/version.c src/window.c
diffstat 3 files changed, 22 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_statusline.vim
+++ b/src/testdir/test_statusline.vim
@@ -433,4 +433,21 @@ func Test_statusline_removed_group()
   call delete('XTest_statusline')
 endfunc
 
+func Test_statusline_after_split_vsplit()
+  only
+
+  " Make the status line of each window show the window number.
+  set ls=2 stl=%{winnr()}
+
+  split | redraw
+  vsplit | redraw
+
+  " The status line of the third window should read '3' here.
+  call assert_equal('3', nr2char(screenchar(&lines - 1, 1)))
+
+  only
+  set ls& stl&
+endfunc
+
+
 " 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 */
 /**/
+    1780,
+/**/
     1779,
 /**/
     1778,
--- a/src/window.c
+++ b/src/window.c
@@ -1273,13 +1273,11 @@ win_split_ins(
     if (flags & (WSP_TOP | WSP_BOT))
 	(void)win_comp_pos();
 
-    /*
-     * Both windows need redrawing
-     */
+     // Both windows need redrawing.  Update all status lines, in case they
+     // show something related to the window count or position.
     redraw_win_later(wp, NOT_VALID);
-    wp->w_redr_status = TRUE;
     redraw_win_later(oldwin, NOT_VALID);
-    oldwin->w_redr_status = TRUE;
+    status_redraw_all();
 
     if (need_status)
     {