changeset 13670:3085d67d24c8 v8.0.1707

patch 8.0.1707: when 'wfh' is set ":bel 10new" scrolls window commit https://github.com/vim/vim/commit/98da6ecab905df48a67da36ce60233f45726c979 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Apr 13 22:15:46 2018 +0200 patch 8.0.1707: when 'wfh' is set ":bel 10new" scrolls window Problem: When 'wfh' is set ":bel 10new" scrolls window. (Andrew Pyatkov) Solution: Set the fraction before changing the window height. (closes https://github.com/vim/vim/issues/2798)
author Christian Brabandt <cb@256bit.org>
date Fri, 13 Apr 2018 22:30:08 +0200
parents 92e05bba1429
children c565c188dbac
files src/version.c src/window.c
diffstat 2 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/version.c
+++ b/src/version.c
@@ -763,6 +763,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1707,
+/**/
     1706,
 /**/
     1705,
--- a/src/window.c
+++ b/src/window.c
@@ -778,6 +778,7 @@ win_split_ins(
     int		before;
     int		minheight;
     int		wmh1;
+    int		did_set_fraction = FALSE;
 
     if (flags & WSP_TOP)
 	oldwin = firstwin;
@@ -959,6 +960,11 @@ win_split_ins(
 	 * instead, if possible. */
 	if (oldwin->w_p_wfh)
 	{
+	    /* Set w_fraction now so that the cursor keeps the same relative
+	     * vertical position using the old height. */
+	    set_fraction(oldwin);
+	    did_set_fraction = TRUE;
+
 	    win_setheight_win(oldwin->w_height + new_size + STATUS_HEIGHT,
 								      oldwin);
 	    oldwin_height = oldwin->w_height;
@@ -1088,7 +1094,8 @@ win_split_ins(
 
     /* Set w_fraction now so that the cursor keeps the same relative
      * vertical position. */
-    set_fraction(oldwin);
+    if (!did_set_fraction)
+	set_fraction(oldwin);
     wp->w_fraction = oldwin->w_fraction;
 
     if (flags & WSP_VERT)