]> granicus.if.org Git - vim/commitdiff
patch 8.2.1780: statusline not updated when splitting windows v8.2.1780
authorBram Moolenaar <Bram@vim.org>
Thu, 1 Oct 2020 17:06:35 +0000 (19:06 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 1 Oct 2020 17:06:35 +0000 (19:06 +0200)
Problem:    Statusline not updated when splitting windows.
Solution:   Call status_redraw_all(). (Jason Franklin, closes #5496)

src/testdir/test_statusline.vim
src/version.c
src/window.c

index f73998a67002bf21d6e2a2c47c324409c04d68be..d8e921f5555adfec0d6fe2821151aa3217a69606 100644 (file)
@@ -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
index 39dcf2ef21a038f600109a0c36c10f9fa844134f..bbe6dd5a6008e302ea6cb960a8a83498d264cce2 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1780,
 /**/
     1779,
 /**/
index c73062ddd6f7d700dabbb72de91e538db249b88c..64017bfebcba33c20e75dcdaa3267a899ae735bc 100644 (file)
@@ -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)
     {