mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.1.1347: fractional scroll position not restored after closing window
Problem: Fractional scroll position not restored after closing window. Solution: Do restore fraction if topline is not one.
This commit is contained in:
parent
7f3a28490a
commit
bd2d68c2f4
@ -745,15 +745,7 @@ endfunc
|
|||||||
|
|
||||||
func Test_split_noscroll()
|
func Test_split_noscroll()
|
||||||
let so_save = &so
|
let so_save = &so
|
||||||
new
|
enew
|
||||||
only
|
|
||||||
|
|
||||||
" Make sure windows can hold all content after split.
|
|
||||||
for i in range(1, 20)
|
|
||||||
wincmd +
|
|
||||||
redraw!
|
|
||||||
endfor
|
|
||||||
|
|
||||||
call setline(1, range(1, 8))
|
call setline(1, range(1, 8))
|
||||||
normal 100%
|
normal 100%
|
||||||
split
|
split
|
||||||
@ -769,12 +761,20 @@ func Test_split_noscroll()
|
|||||||
call assert_equal(1, info1.topline)
|
call assert_equal(1, info1.topline)
|
||||||
call assert_equal(1, info2.topline)
|
call assert_equal(1, info2.topline)
|
||||||
|
|
||||||
" Restore original state.
|
" window that fits all lines by itself, but not when split: closing other
|
||||||
for i in range(1, 20)
|
" window should restore fraction.
|
||||||
wincmd -
|
|
||||||
redraw!
|
|
||||||
endfor
|
|
||||||
only!
|
only!
|
||||||
|
call setline(1, range(1, &lines - 10))
|
||||||
|
exe &lines / 4
|
||||||
|
let winid1 = win_getid()
|
||||||
|
let info1 = getwininfo(winid1)[0]
|
||||||
|
call assert_equal(1, info1.topline)
|
||||||
|
new
|
||||||
|
redraw
|
||||||
|
close
|
||||||
|
let info1 = getwininfo(winid1)[0]
|
||||||
|
call assert_equal(1, info1.topline)
|
||||||
|
|
||||||
bwipe!
|
bwipe!
|
||||||
let &so = so_save
|
let &so = so_save
|
||||||
endfunc
|
endfunc
|
||||||
|
@ -767,6 +767,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1347,
|
||||||
/**/
|
/**/
|
||||||
1346,
|
1346,
|
||||||
/**/
|
/**/
|
||||||
|
@ -5830,10 +5830,11 @@ scroll_to_fraction(win_T *wp, int prev_height)
|
|||||||
// Don't change w_topline in any of these cases:
|
// Don't change w_topline in any of these cases:
|
||||||
// - window height is 0
|
// - window height is 0
|
||||||
// - 'scrollbind' is set and this isn't the current window
|
// - 'scrollbind' is set and this isn't the current window
|
||||||
// - window height is sufficient to display the whole buffer
|
// - window height is sufficient to display the whole buffer and first line
|
||||||
|
// is visible.
|
||||||
if (height > 0
|
if (height > 0
|
||||||
&& (!wp->w_p_scb || wp == curwin)
|
&& (!wp->w_p_scb || wp == curwin)
|
||||||
&& (height < wp->w_buffer->b_ml.ml_line_count))
|
&& (height < wp->w_buffer->b_ml.ml_line_count || wp->w_topline > 1))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Find a value for w_topline that shows the cursor at the same
|
* Find a value for w_topline that shows the cursor at the same
|
||||||
|
Loading…
x
Reference in New Issue
Block a user