# HG changeset patch # User Christian Brabandt # Date 1533668405 -7200 # Node ID 2771a99db70c5139cfb43628fca591e9fa597048 # Parent 34f10c103329fb24cfed5ce5114cd4129bb80944 patch 8.1.0250: MS-Windows using VTP: windows size change incorrect commit https://github.com/vim/vim/commit/b1cf16113f7ab67f42fb6822cecdef74a54fa950 Author: Bram Moolenaar Date: Tue Aug 7 20:47:16 2018 +0200 patch 8.1.0250: MS-Windows using VTP: windows size change incorrect Problem: MS-Windows using VTP: windows size change incorrect. Solution: Call SetConsoleScreenBufferSize() first. (Nobuhiro Takasaki, closes #3164) diff --git a/src/os_win32.c b/src/os_win32.c --- a/src/os_win32.c +++ b/src/os_win32.c @@ -3967,6 +3967,48 @@ mch_get_shellsize(void) } /* + * Resize console buffer to 'COORD' + */ + static void +ResizeConBuf( + HANDLE hConsole, + COORD coordScreen) +{ + if (!SetConsoleScreenBufferSize(hConsole, coordScreen)) + { +#ifdef MCH_WRITE_DUMP + if (fdDump) + { + fprintf(fdDump, "SetConsoleScreenBufferSize failed: %lx\n", + GetLastError()); + fflush(fdDump); + } +#endif + } +} + +/* + * Resize console window size to 'srWindowRect' + */ + static void +ResizeWindow( + HANDLE hConsole, + SMALL_RECT srWindowRect) +{ + if (!SetConsoleWindowInfo(hConsole, TRUE, &srWindowRect)) + { +#ifdef MCH_WRITE_DUMP + if (fdDump) + { + fprintf(fdDump, "SetConsoleWindowInfo failed: %lx\n", + GetLastError()); + fflush(fdDump); + } +#endif + } +} + +/* * Set a console window to `xSize' * `ySize' */ static void @@ -4019,32 +4061,20 @@ ResizeConBufAndWindow( } } - if (!SetConsoleWindowInfo(g_hConOut, TRUE, &srWindowRect)) - { -#ifdef MCH_WRITE_DUMP - if (fdDump) - { - fprintf(fdDump, "SetConsoleWindowInfo failed: %lx\n", - GetLastError()); - fflush(fdDump); - } -#endif - } - - /* define the new console buffer size */ + // define the new console buffer size coordScreen.X = xSize; coordScreen.Y = ySize; - if (!SetConsoleScreenBufferSize(hConsole, coordScreen)) - { -#ifdef MCH_WRITE_DUMP - if (fdDump) - { - fprintf(fdDump, "SetConsoleScreenBufferSize failed: %lx\n", - GetLastError()); - fflush(fdDump); - } -#endif + // In the new console call API in reverse order + if (!vtp_working) + { + ResizeWindow(hConsole, srWindowRect); + ResizeConBuf(hConsole, coordScreen); + } + else + { + ResizeConBuf(hConsole, coordScreen); + ResizeWindow(hConsole, srWindowRect); } } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -795,6 +795,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 250, +/**/ 249, /**/ 248,