0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

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)
This commit is contained in:
Bram Moolenaar 2019-03-17 14:54:53 +01:00
parent ab89d7ab89
commit 3b5fef6a99
2 changed files with 22 additions and 18 deletions

View File

@ -6024,6 +6024,8 @@ insert_lines(unsigned cLines)
COORD dest; COORD dest;
CHAR_INFO fill; CHAR_INFO fill;
gotoxy(g_srScrollRegion.Left + 1, g_srScrollRegion.Top + 1);
dest.X = g_srScrollRegion.Left; dest.X = g_srScrollRegion.Left;
dest.Y = g_coord.Y + cLines; dest.Y = g_coord.Y + cLines;
@ -6037,17 +6039,16 @@ insert_lines(unsigned cLines)
clip.Right = g_srScrollRegion.Right; clip.Right = g_srScrollRegion.Right;
clip.Bottom = g_srScrollRegion.Bottom; clip.Bottom = g_srScrollRegion.Bottom;
{ fill.Char.AsciiChar = ' ';
fill.Char.AsciiChar = ' '; if (!USE_VTP)
if (!USE_VTP) fill.Attributes = g_attrCurrent;
fill.Attributes = g_attrCurrent; else
else fill.Attributes = g_attrDefault;
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 // 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 // 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... // 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; CHAR_INFO fill;
int nb; int nb;
gotoxy(g_srScrollRegion.Left + 1, g_srScrollRegion.Top + 1);
dest.X = g_srScrollRegion.Left; dest.X = g_srScrollRegion.Left;
dest.Y = g_coord.Y; dest.Y = g_coord.Y;
@ -6094,17 +6097,16 @@ delete_lines(unsigned cLines)
clip.Right = g_srScrollRegion.Right; clip.Right = g_srScrollRegion.Right;
clip.Bottom = g_srScrollRegion.Bottom; clip.Bottom = g_srScrollRegion.Bottom;
{ fill.Char.AsciiChar = ' ';
fill.Char.AsciiChar = ' '; if (!USE_VTP)
if (!USE_VTP) fill.Attributes = g_attrCurrent;
fill.Attributes = g_attrCurrent; else
else fill.Attributes = g_attrDefault;
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() // Here we have to deal with a win32 console flake; See insert_lines()
// above. // above.

View File

@ -779,6 +779,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 */
/**/
1013,
/**/ /**/
1012, 1012,
/**/ /**/