diff options
author | Christopher Plewright <chris@createng.com> | 2022-12-22 13:45:23 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-12-22 13:45:23 +0000 |
commit | c8b126d70d567269464fd70c54e22fdd78ec50ad (patch) | |
tree | bd6ce851822028a80d51f1882fa923de292b944f | |
parent | 9b8a365d019bb948efba5b5276d52bdd99e15d05 (diff) |
patch 9.0.1086: display wrong in Windows terminal after exiting Vimv9.0.1086
Problem: Display wrong in Windows terminal after exiting Vim.
Solution: Apply screen restore fix for Windows 11 also to Windows 10 builds.
(Christopher Plewright, closes #11713, closes #11706)
-rw-r--r-- | src/os_win32.c | 19 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/os_win32.c b/src/os_win32.c index 20ec8adeb2..4b23b1d1c2 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -256,7 +256,8 @@ static int suppress_winsize = 1; // don't fiddle with console static char_u *exe_path = NULL; static BOOL win8_or_later = FALSE; -static BOOL win11_or_later = FALSE; +static BOOL win10_22H2_or_later = FALSE; +static BOOL use_alternate_screen_buffer = FALSE; /* * Get version number including build number @@ -919,9 +920,9 @@ PlatformId(void) || ovi.dwMajorVersion > 6) win8_or_later = TRUE; - if ((ovi.dwMajorVersion == 10 && ovi.dwBuildNumber >= 22000) + if ((ovi.dwMajorVersion == 10 && ovi.dwBuildNumber >= 19045) || ovi.dwMajorVersion > 10) - win11_or_later = TRUE; + win10_22H2_or_later = TRUE; #ifdef HAVE_ACL // Enable privilege for getting or setting SACLs. @@ -3040,7 +3041,7 @@ SaveConsoleBuffer( // VTP uses alternate screen buffer. // No need to save buffer contents for restoration. - if (win11_or_later && vtp_working) + if (use_alternate_screen_buffer) return TRUE; /* @@ -3138,7 +3139,7 @@ RestoreConsoleBuffer( // VTP uses alternate screen buffer. // No need to restore buffer contents. - if (win11_or_later && vtp_working) + if (use_alternate_screen_buffer) return TRUE; if (cb == NULL || !cb->IsValid) @@ -6106,7 +6107,8 @@ termcap_mode_start(void) // VTP uses alternate screen buffer. // Switch to a new alternate screen buffer. - if (win11_or_later && p_rs && vtp_working) + // But, not if running in a nested terminal + if (use_alternate_screen_buffer) vtp_printf("\033[?1049h"); SaveConsoleBuffer(&g_cbNonTermcap); @@ -6189,7 +6191,7 @@ termcap_mode_end(void) // VTP uses alternate screen buffer. // Switch back to main screen buffer. - if (exiting && win11_or_later && p_rs && vtp_working) + if (exiting && use_alternate_screen_buffer) vtp_printf("\033[?1049l"); if (!USE_WT && (p_rs || exiting)) @@ -8392,7 +8394,8 @@ vtp_init(void) default_console_color_fg = fg; } # endif - + use_alternate_screen_buffer = win10_22H2_or_later && p_rs && vtp_working + && !mch_getenv("VIM_TERMINAL"); set_console_color_rgb(); } diff --git a/src/version.c b/src/version.c index 4a3718d696..58bdee4c1c 100644 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1086, +/**/ 1085, /**/ 1084, |