summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuuk van Baal <luukvbaal@gmail.com>2022-11-28 16:49:36 +0000
committerBram Moolenaar <Bram@vim.org>2022-11-28 16:49:36 +0000
commit74a694dbe20bb7dea4e06f474cf62e20f9c92f1d (patch)
tree380e37d2a79c0d6cc76977d9d156bd026299a0ff
parent269aa2b29ac3e4c0083d929e2477c95e7bd1177a (diff)
patch 9.0.0964: status line not redrawn when 'splitkeep' is "screen"v9.0.0964
Problem: Status line of other window not redrawn when dragging it when 'splitkeep' is set to "screen". Solution: Set w_redr_status earlier. (Luuk van Baal, closes #11635, closes #11632)
-rw-r--r--src/testdir/dumps/Test_splitkeep_status_1.dump10
-rw-r--r--src/testdir/test_window_cmd.vim18
-rw-r--r--src/version.c2
-rw-r--r--src/window.c2
4 files changed, 31 insertions, 1 deletions
diff --git a/src/testdir/dumps/Test_splitkeep_status_1.dump b/src/testdir/dumps/Test_splitkeep_status_1.dump
new file mode 100644
index 0000000000..1131c69fde
--- /dev/null
+++ b/src/testdir/dumps/Test_splitkeep_status_1.dump
@@ -0,0 +1,10 @@
+|a+0&#ffffff0| @73
+|b| @73
+|c| @73
+|~+0#4040ff13&| @73
+|~| @73
+|[+1#0000000&|N|o| |N|a|m|e|]| @47|1|,|1| @11|A|l@1
+>b+0&&| @73
+|c| @73
+|[+3&&|N|o| |N|a|m|e|]| @47|2|,|1| @11|B|o|t
+|:+0&&|c|a|l@1| |w|i|n|_|m|o|v|e|_|s|t|a|t|u|s|l|i|n|e|(|w|i|n|,| |1|)| @41
diff --git a/src/testdir/test_window_cmd.vim b/src/testdir/test_window_cmd.vim
index 7aecb92bd9..3519a1dce3 100644
--- a/src/testdir/test_window_cmd.vim
+++ b/src/testdir/test_window_cmd.vim
@@ -1895,4 +1895,22 @@ function Test_splitkeep_fold()
call VerifyScreenDump(buf, 'Test_splitkeep_fold_4', {})
endfunction
+function Test_splitkeep_status()
+ CheckScreendump
+
+ let lines =<< trim END
+ call setline(1, ['a', 'b', 'c'])
+ set nomodified
+ set splitkeep=screen
+ let win = winnr()
+ wincmd s
+ wincmd j
+ END
+ call writefile(lines, 'XTestSplitkeepStatus', 'D')
+ let buf = RunVimInTerminal('-S XTestSplitkeepStatus', #{rows: 10})
+
+ call term_sendkeys(buf, ":call win_move_statusline(win, 1)\<CR>")
+ call VerifyScreenDump(buf, 'Test_splitkeep_status_1', {})
+endfunction
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index b51c904800..e53ad971f0 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 964,
+/**/
963,
/**/
962,
diff --git a/src/window.c b/src/window.c
index a2bebcaea4..869c985358 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6832,6 +6832,7 @@ win_new_height(win_T *wp, int height)
wp->w_height = height;
wp->w_skipcol = 0;
+ wp->w_redr_status = TRUE;
win_comp_scroll(wp);
// There is no point in adjusting the scroll position when exiting. Some
@@ -6958,7 +6959,6 @@ scroll_to_fraction(win_T *wp, int prev_height)
wp->w_prev_fraction_row = wp->w_wrow;
redraw_win_later(wp, UPD_SOME_VALID);
- wp->w_redr_status = TRUE;
invalidate_botline_win(wp);
}