diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-10-01 19:06:35 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-10-01 19:06:35 +0200 |
commit | 668008be66326ed9e5b1122abede34ed3d2de2d8 (patch) | |
tree | f2095fa589aa2ecb333fc0d88589692add598ada | |
parent | 0022675aa362da0969666e48ced252b57ca1f79e (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.vim | 17 | ||||
-rw-r--r-- | src/version.c | 2 | ||||
-rw-r--r-- | src/window.c | 8 |
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) { |