summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-10-01 19:06:35 +0200
committerBram Moolenaar <Bram@vim.org>2020-10-01 19:06:35 +0200
commit668008be66326ed9e5b1122abede34ed3d2de2d8 (patch)
treef2095fa589aa2ecb333fc0d88589692add598ada
parent0022675aa362da0969666e48ced252b57ca1f79e (diff)
patch 8.2.1780: statusline not updated when splitting windowsv8.2.1780
Problem: Statusline not updated when splitting windows. Solution: Call status_redraw_all(). (Jason Franklin, closes #5496)
-rw-r--r--src/testdir/test_statusline.vim17
-rw-r--r--src/version.c2
-rw-r--r--src/window.c8
3 files changed, 22 insertions, 5 deletions
diff --git a/src/testdir/test_statusline.vim b/src/testdir/test_statusline.vim
index f73998a670..d8e921f555 100644
--- 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
diff --git a/src/version.c b/src/version.c
index 39dcf2ef21..bbe6dd5a60 100644
--- 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,
diff --git a/src/window.c b/src/window.c
index c73062ddd6..64017bfebc 100644
--- 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)
{