changeset 16015:7e33709a3d0a v8.1.1013

patch 8.1.1013: MS-Windows: Scrolling fails when dividing the screen commit https://github.com/vim/vim/commit/3b5fef6a995f25a8a8f746896de44df49b69dfdf Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 17 14:54:53 2019 +0100 patch 8.1.1013: MS-Windows: Scrolling fails when dividing the screen Problem: MS-Windows: Scrolling fails when dividing the screen. Solution: Position the cursor before calling ScrollConsoleScreenBuffer(). (Nobuhiro Takasaki, closes #4115)
author Bram Moolenaar <Bram@vim.org>
date Sun, 17 Mar 2019 15:00:07 +0100
parents e90dfd2825af
children a1f884a6e308
files src/os_win32.c src/version.c
diffstat 2 files changed, 26 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -6024,6 +6024,8 @@ insert_lines(unsigned cLines)
     COORD	    dest;
     CHAR_INFO	    fill;
 
+    gotoxy(g_srScrollRegion.Left + 1, g_srScrollRegion.Top + 1);
+
     dest.X = g_srScrollRegion.Left;
     dest.Y = g_coord.Y + cLines;
 
@@ -6037,17 +6039,16 @@ insert_lines(unsigned cLines)
     clip.Right  = g_srScrollRegion.Right;
     clip.Bottom = g_srScrollRegion.Bottom;
 
-    {
-	fill.Char.AsciiChar = ' ';
-	if (!USE_VTP)
-	    fill.Attributes = g_attrCurrent;
-	else
-	    fill.Attributes = g_attrDefault;
-
-	set_console_color_rgb();
-
-	ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
-    }
+    fill.Char.AsciiChar = ' ';
+    if (!USE_VTP)
+	fill.Attributes = g_attrCurrent;
+    else
+	fill.Attributes = g_attrDefault;
+
+    set_console_color_rgb();
+
+    ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
+
     // Here we have to deal with a win32 console flake: If the scroll
     // region looks like abc and we scroll c to a and fill with d we get
     // cbd... if we scroll block c one line at a time to a, we get cdd...
@@ -6081,6 +6082,8 @@ delete_lines(unsigned cLines)
     CHAR_INFO	    fill;
     int		    nb;
 
+    gotoxy(g_srScrollRegion.Left + 1, g_srScrollRegion.Top + 1);
+
     dest.X = g_srScrollRegion.Left;
     dest.Y = g_coord.Y;
 
@@ -6094,17 +6097,16 @@ delete_lines(unsigned cLines)
     clip.Right  = g_srScrollRegion.Right;
     clip.Bottom = g_srScrollRegion.Bottom;
 
-    {
-	fill.Char.AsciiChar = ' ';
-	if (!USE_VTP)
-	    fill.Attributes = g_attrCurrent;
-	else
-	    fill.Attributes = g_attrDefault;
-
-	set_console_color_rgb();
-
-	ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
-    }
+    fill.Char.AsciiChar = ' ';
+    if (!USE_VTP)
+	fill.Attributes = g_attrCurrent;
+    else
+	fill.Attributes = g_attrDefault;
+
+    set_console_color_rgb();
+
+    ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
+
     // Here we have to deal with a win32 console flake; See insert_lines()
     // above.
 
--- a/src/version.c
+++ b/src/version.c
@@ -780,6 +780,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1013,
+/**/
     1012,
 /**/
     1011,