mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
updated for version 7.4.280
Problem: When using a session file the relative position of the cursor is not restored if there is another tab. (Nobuhiro Takasaki) Solution: Update w_wrow before calculating the fraction.
This commit is contained in:
@@ -734,6 +734,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 */
|
||||||
|
/**/
|
||||||
|
280,
|
||||||
/**/
|
/**/
|
||||||
279,
|
279,
|
||||||
/**/
|
/**/
|
||||||
|
18
src/window.c
18
src/window.c
@@ -5623,7 +5623,7 @@ set_fraction(wp)
|
|||||||
win_T *wp;
|
win_T *wp;
|
||||||
{
|
{
|
||||||
wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT
|
wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT
|
||||||
+ FRACTION_MULT / 2) / (long)wp->w_height;
|
+ wp->w_height / 2) / (long)wp->w_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -5638,6 +5638,7 @@ win_new_height(wp, height)
|
|||||||
{
|
{
|
||||||
linenr_T lnum;
|
linenr_T lnum;
|
||||||
int sline, line_size;
|
int sline, line_size;
|
||||||
|
int prev_height = wp->w_height;
|
||||||
|
|
||||||
/* Don't want a negative height. Happens when splitting a tiny window.
|
/* Don't want a negative height. Happens when splitting a tiny window.
|
||||||
* Will equalize heights soon to fix it. */
|
* Will equalize heights soon to fix it. */
|
||||||
@@ -5646,8 +5647,13 @@ win_new_height(wp, height)
|
|||||||
if (wp->w_height == height)
|
if (wp->w_height == height)
|
||||||
return; /* nothing to do */
|
return; /* nothing to do */
|
||||||
|
|
||||||
if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0)
|
if (wp->w_height > 0)
|
||||||
set_fraction(wp);
|
{
|
||||||
|
if (wp == curwin)
|
||||||
|
validate_cursor(); /* w_wrow needs to be valid */
|
||||||
|
if (wp->w_wrow != wp->w_prev_fraction_row)
|
||||||
|
set_fraction(wp);
|
||||||
|
}
|
||||||
|
|
||||||
wp->w_height = height;
|
wp->w_height = height;
|
||||||
wp->w_skipcol = 0;
|
wp->w_skipcol = 0;
|
||||||
@@ -5667,7 +5673,8 @@ win_new_height(wp, height)
|
|||||||
lnum = wp->w_cursor.lnum;
|
lnum = wp->w_cursor.lnum;
|
||||||
if (lnum < 1) /* can happen when starting up */
|
if (lnum < 1) /* can happen when starting up */
|
||||||
lnum = 1;
|
lnum = 1;
|
||||||
wp->w_wrow = ((long)wp->w_fraction * (long)height - 1L) / FRACTION_MULT;
|
wp->w_wrow = ((long)wp->w_fraction * (long)height - 1L
|
||||||
|
+ FRACTION_MULT / 2) / FRACTION_MULT;
|
||||||
line_size = plines_win_col(wp, lnum, (long)(wp->w_cursor.col)) - 1;
|
line_size = plines_win_col(wp, lnum, (long)(wp->w_cursor.col)) - 1;
|
||||||
sline = wp->w_wrow - line_size;
|
sline = wp->w_wrow - line_size;
|
||||||
|
|
||||||
@@ -5757,7 +5764,8 @@ win_new_height(wp, height)
|
|||||||
update_topline();
|
update_topline();
|
||||||
curs_columns(FALSE); /* validate w_wrow */
|
curs_columns(FALSE); /* validate w_wrow */
|
||||||
}
|
}
|
||||||
wp->w_prev_fraction_row = wp->w_wrow;
|
if (prev_height > 0)
|
||||||
|
wp->w_prev_fraction_row = wp->w_wrow;
|
||||||
|
|
||||||
win_comp_scroll(wp);
|
win_comp_scroll(wp);
|
||||||
redraw_win_later(wp, SOME_VALID);
|
redraw_win_later(wp, SOME_VALID);
|
||||||
|
Reference in New Issue
Block a user