0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

patch 9.0.0931: MS-Windows: mouse column limited to 223

Problem:    MS-Windows: mouse column limited to 223.
Solution:   Use two bytes for each mouse coordinate.  Add the mouse position
            to scroll events. (Christopher Plewright, closes #11597)
This commit is contained in:
Christopher Plewright
2022-11-23 22:28:08 +00:00
committed by Bram Moolenaar
parent 63a2e360cc
commit 36446bbb62
4 changed files with 27 additions and 11 deletions

View File

@@ -2308,10 +2308,15 @@ check_termcode_mouse(
*/ */
for (;;) for (;;)
{ {
# ifdef FEAT_GUI // For the GUI and for MS-Windows two bytes each are used for row
if (gui.in_use) // and column. Allows for more than 223 columns.
# if defined(FEAT_GUI) || defined(MSWIN)
if (TRUE
# if defined(FEAT_GUI) && !defined(MSWIN)
&& gui.in_use
# endif
)
{ {
// GUI uses more bits for columns > 223
num_bytes = get_bytes_from_buf(tp + *slen, bytes, 5); num_bytes = get_bytes_from_buf(tp + *slen, bytes, 5);
if (num_bytes == -1) // not enough coordinates if (num_bytes == -1) // not enough coordinates
return -1; return -1;

View File

@@ -2055,17 +2055,23 @@ mch_inchar(
typeahead[typeaheadlen++] = CSI; typeahead[typeaheadlen++] = CSI;
typeahead[typeaheadlen++] = KS_EXTRA; typeahead[typeaheadlen++] = KS_EXTRA;
typeahead[typeaheadlen++] = scroll_dir; typeahead[typeaheadlen++] = scroll_dir;
g_nMouseClick = -1;
} }
else else
{ {
typeahead[typeaheadlen++] = ESC + 128; typeahead[typeaheadlen++] = ESC + 128;
typeahead[typeaheadlen++] = 'M'; typeahead[typeaheadlen++] = 'M';
typeahead[typeaheadlen++] = g_nMouseClick; typeahead[typeaheadlen++] = g_nMouseClick;
typeahead[typeaheadlen++] = g_xMouse + '!';
typeahead[typeaheadlen++] = g_yMouse + '!';
g_nMouseClick = -1;
} }
// Pass the pointer coordinates of the mouse event in 2 bytes,
// allowing for > 223 columns. Both for click and scroll events.
// This is the same as what is used for the GUI.
typeahead[typeaheadlen++] = (char_u)(g_xMouse / 128 + ' ' + 1);
typeahead[typeaheadlen++] = (char_u)(g_xMouse % 128 + ' ' + 1);
typeahead[typeaheadlen++] = (char_u)(g_yMouse / 128 + ' ' + 1);
typeahead[typeaheadlen++] = (char_u)(g_yMouse % 128 + ' ' + 1);
g_nMouseClick = -1;
} }
else else
{ {

View File

@@ -5857,12 +5857,15 @@ check_termcode(
// We only get here when we have a complete termcode match // We only get here when we have a complete termcode match
#ifdef FEAT_GUI #if defined(FEAT_GUI) || defined(MSWIN)
/* /*
* Only in the GUI: Fetch the pointer coordinates of the scroll event * For scroll events from the GUI or MS-Windows console, fetch the
* so that we know which window to scroll later. * pointer coordinates so that we know which window to scroll later.
*/ */
if (gui.in_use if (TRUE
# if defined(FEAT_GUI) && !defined(MSWIN)
&& gui.in_use
# endif
&& key_name[0] == (int)KS_EXTRA && key_name[0] == (int)KS_EXTRA
&& (key_name[1] == (int)KE_X1MOUSE && (key_name[1] == (int)KE_X1MOUSE
|| key_name[1] == (int)KE_X2MOUSE || key_name[1] == (int)KE_X2MOUSE

View File

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