Mercurial > vim
changeset 14473:2771a99db70c v8.1.0250
patch 8.1.0250: MS-Windows using VTP: windows size change incorrect
commit https://github.com/vim/vim/commit/b1cf16113f7ab67f42fb6822cecdef74a54fa950
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 07 Aug 2018 21:00:05 +0200 |
parents | 34f10c103329 |
children | 6325f850efcf |
files | src/os_win32.c src/version.c |
diffstat | 2 files changed, 55 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- 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); } }