0
0
mirror of https://github.com/vim/vim.git synced 2025-08-26 20:03:41 -04:00

patch 9.1.1297: Ctrl-D scrolling can get stuck

Problem:  cursor_correct() calculates a valid cursor position which
	  is later changed by update_topline() and causes Ctrl-D
          scrolling to be stuck (Daniel Steinberg, after v9.1.0258).
Solution: Update the valid cursor position before validating topline
          (Luuk van Baal).

fixes: #17106
closes: #17110

Signed-off-by: Luuk van Baal <luukvbaal@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Luuk van Baal 2025-04-13 17:45:34 +02:00 committed by Christian Brabandt
parent 829eda7d38
commit c98250377d
No known key found for this signature in database
GPG Key ID: F3F92DA383FDDE09
3 changed files with 22 additions and 0 deletions

View File

@ -3120,6 +3120,7 @@ cursor_correct(void)
~(VALID_WROW|VALID_WCOL|VALID_CHEIGHT|VALID_CROW);
}
}
check_cursor_moved(curwin);
curwin->w_valid |= VALID_TOPLINE;
}

View File

@ -4326,4 +4326,23 @@ func Test_normal_go()
bwipe!
endfunc
" Test for Ctrl-D with 'scrolloff' and narrow window does not get stuck.
func Test_scroll_longline_scrolloff()
11new
36vsplit
set scrolloff=5
call setline(1, ['']->repeat(5))
call setline(6, ['foo'->repeat(20)]->repeat(2))
call setline(8, ['bar'->repeat(30)])
call setline(9, ['']->repeat(5))
exe "normal! \<C-D>"
call assert_equal(6, line('w0'))
exe "normal! \<C-D>"
call assert_equal(7, line('w0'))
set scrolloff&
bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab nofoldenable

View File

@ -704,6 +704,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1297,
/**/
1296,
/**/