0
0
mirror of https://github.com/vim/vim.git synced 2025-07-24 10:45:12 -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;
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.

View File

@ -779,6 +779,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1013,
/**/
1012,
/**/