diff options
author | Wez Furlong <wez@wezfurlong.org> | 2021-05-30 19:29:41 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-05-30 19:29:41 +0200 |
commit | 6ef5ab59043681a51e8ca2ab0a1e4ff8f0f4bb47 (patch) | |
tree | 451113aacc746259c92ff21252f751cd27018544 | |
parent | f883d9027c750967b115b82de984ee449ab17aa8 (diff) | |
download | vim-git-6ef5ab59043681a51e8ca2ab0a1e4ff8f0f4bb47.tar.gz |
patch 8.2.2913: MS-Windows conpty supports using mouse eventsv8.2.2913
Problem: MS-Windows conpty supports using mouse events.
Solution: When enabling the mouse enable mouse input and disable quick edit
mode. (Wez Furlong, closes #8280)
-rw-r--r-- | src/os_win32.c | 34 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 29 insertions, 7 deletions
diff --git a/src/os_win32.c b/src/os_win32.c index 8a1ed72d7..c5bbc2bf2 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -1180,6 +1180,8 @@ static int g_fMouseActive = FALSE; // mouse enabled static int g_nMouseClick = -1; // mouse status static int g_xMouse; // mouse x coordinate static int g_yMouse; // mouse y coordinate +static DWORD g_cmodein = 0; // Original console input mode +static DWORD g_cmodeout = 0; // Original console output mode /* * Enable or disable mouse input @@ -1200,11 +1202,17 @@ mch_setmouse(int on) GetConsoleMode(g_hConIn, &cmodein); if (g_fMouseActive) + { cmodein |= ENABLE_MOUSE_INPUT; + cmodein &= ~ENABLE_QUICK_EDIT_MODE; + } else + { cmodein &= ~ENABLE_MOUSE_INPUT; + cmodein |= g_cmodein & ENABLE_QUICK_EDIT_MODE; + } - SetConsoleMode(g_hConIn, cmodein); + SetConsoleMode(g_hConIn, cmodein | ENABLE_EXTENDED_FLAGS); } @@ -2782,8 +2790,6 @@ SaveConsoleTitleAndIcon(void) static int g_fWindInitCalled = FALSE; static int g_fTermcapMode = FALSE; static CONSOLE_CURSOR_INFO g_cci; -static DWORD g_cmodein = 0; -static DWORD g_cmodeout = 0; /* * non-GUI version of mch_init(). @@ -2924,7 +2930,7 @@ mch_exit_c(int r) } SetConsoleCursorInfo(g_hConOut, &g_cci); - SetConsoleMode(g_hConIn, g_cmodein); + SetConsoleMode(g_hConIn, g_cmodein | ENABLE_EXTENDED_FLAGS); SetConsoleMode(g_hConOut, g_cmodeout); # ifdef DYNAMIC_GETTEXT @@ -3747,7 +3753,14 @@ mch_settmode(tmode_T tmode) cmodein &= ~(ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_ECHO_INPUT); if (g_fMouseActive) + { cmodein |= ENABLE_MOUSE_INPUT; + cmodein &= ~ENABLE_QUICK_EDIT_MODE; + } + else + { + cmodein |= g_cmodein & ENABLE_QUICK_EDIT_MODE; + } cmodeout &= ~( # ifdef FEAT_TERMGUICOLORS // Do not turn off the ENABLE_PROCESSED_OUTPUT flag when using @@ -3766,7 +3779,7 @@ mch_settmode(tmode_T tmode) cmodeout |= (ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT); bEnableHandler = FALSE; } - SetConsoleMode(g_hConIn, cmodein); + SetConsoleMode(g_hConIn, cmodein | ENABLE_EXTENDED_FLAGS); SetConsoleMode(g_hConOut, cmodeout); SetConsoleCtrlHandler(handler_routine, bEnableHandler); @@ -5621,11 +5634,17 @@ termcap_mode_start(void) GetConsoleMode(g_hConIn, &cmodein); if (g_fMouseActive) + { cmodein |= ENABLE_MOUSE_INPUT; + cmodein &= ~ENABLE_QUICK_EDIT_MODE; + } else + { cmodein &= ~ENABLE_MOUSE_INPUT; + cmodein |= g_cmodein & ENABLE_QUICK_EDIT_MODE; + } cmodein |= ENABLE_WINDOW_INPUT; - SetConsoleMode(g_hConIn, cmodein); + SetConsoleMode(g_hConIn, cmodein | ENABLE_EXTENDED_FLAGS); redraw_later_clear(); g_fTermcapMode = TRUE; @@ -5650,7 +5669,8 @@ termcap_mode_end(void) GetConsoleMode(g_hConIn, &cmodein); cmodein &= ~(ENABLE_MOUSE_INPUT | ENABLE_WINDOW_INPUT); - SetConsoleMode(g_hConIn, cmodein); + cmodein |= g_cmodein & ENABLE_QUICK_EDIT_MODE; + SetConsoleMode(g_hConIn, cmodein | ENABLE_EXTENDED_FLAGS); # ifdef FEAT_RESTORE_ORIG_SCREEN cb = exiting ? &g_cbOrig : &g_cbNonTermcap; diff --git a/src/version.c b/src/version.c index d651bdaf2..94e94c476 100644 --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2913, +/**/ 2912, /**/ 2911, |