]> granicus.if.org Git - vim/commitdiff
patch 8.1.1013: MS-Windows: Scrolling fails when dividing the screen v8.1.1013
authorBram Moolenaar <Bram@vim.org>
Sun, 17 Mar 2019 13:54:53 +0000 (14:54 +0100)
committerBram Moolenaar <Bram@vim.org>
Sun, 17 Mar 2019 13:54:53 +0000 (14:54 +0100)
Problem:    MS-Windows: Scrolling fails when dividing the screen.
Solution:   Position the cursor before calling ScrollConsoleScreenBuffer().
            (Nobuhiro Takasaki, closes #4115)

src/os_win32.c
src/version.c

index 876a7a409ac6ee99e7067b8301e17f58b6429cad..ff1177722031bae886165e112b899d9a61edcc1f 100644 (file)
@@ -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;
+    fill.Char.AsciiChar = ' ';
+    if (!USE_VTP)
+       fill.Attributes = g_attrCurrent;
+    else
+       fill.Attributes = g_attrDefault;
 
-       set_console_color_rgb();
+    set_console_color_rgb();
+
+    ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
 
-       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;
+    fill.Char.AsciiChar = ' ';
+    if (!USE_VTP)
+       fill.Attributes = g_attrCurrent;
+    else
+       fill.Attributes = g_attrDefault;
 
-       set_console_color_rgb();
+    set_console_color_rgb();
+
+    ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
 
-       ScrollConsoleScreenBuffer(g_hConOut, &source, &clip, dest, &fill);
-    }
     // Here we have to deal with a win32 console flake; See insert_lines()
     // above.
 
index 91f05b929546ede333ac44cd480343db39c5341d..8b3bc69549d42b63c90c9b92242dccde7e33e3cc 100644 (file)
@@ -779,6 +779,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1013,
 /**/
     1012,
 /**/