From fc908b500683215085ee6c12b41aa227332b7bbe Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 6 Jun 2023 06:34:02 +0800 Subject: vim-patch:9.0.1610: display is wrong when 'smoothscroll' is set Problem: Display is wrong when 'smoothscroll' is set and scrolling multiple lines. Solution: Redraw with UPD_NOT_VALID when "skipcol" is or was set. (closes vim/vim#12490, closes vim/vim#12468) https://github.com/vim/vim/commit/d9a92dc70b20c76cef9ca186676583c92c14311c --- src/nvim/move.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/nvim/move.c b/src/nvim/move.c index 5d817fd7aa..5934ad90e9 100644 --- a/src/nvim/move.c +++ b/src/nvim/move.c @@ -1344,7 +1344,6 @@ bool scrollup(long line_count, int byfold) int width1 = curwin->w_width_inner - curwin_col_off(); int width2 = width1 + curwin_col_off2(); unsigned size = 0; - linenr_T prev_topline = curwin->w_topline; const colnr_T prev_skipcol = curwin->w_skipcol; if (do_sms) { @@ -1397,9 +1396,9 @@ bool scrollup(long line_count, int byfold) } } - if (curwin->w_topline == prev_topline - || curwin->w_skipcol != prev_skipcol) { - // need to redraw because wl_size of the topline may now be invalid + if (prev_skipcol > 0 || curwin->w_skipcol > 0) { + // need to redraw more, because wl_size of the (new) topline may + // now be invalid redraw_later(curwin, UPD_NOT_VALID); } } else { -- cgit