To: vim_dev@googlegroups.com Subject: Patch 9.0.0931 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.0931 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) Files: src/mouse.c, src/os_win32.c, src/term.c *** ../vim-9.0.0930/src/mouse.c 2022-11-22 12:40:44.066427878 +0000 --- src/mouse.c 2022-11-23 22:23:26.760033230 +0000 *************** *** 2308,2317 **** */ for (;;) { ! # ifdef FEAT_GUI ! if (gui.in_use) { - // GUI uses more bits for columns > 223 num_bytes = get_bytes_from_buf(tp + *slen, bytes, 5); if (num_bytes == -1) // not enough coordinates return -1; --- 2308,2322 ---- */ for (;;) { ! // For the GUI and for MS-Windows two bytes each are used for row ! // 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 ! ) { num_bytes = get_bytes_from_buf(tp + *slen, bytes, 5); if (num_bytes == -1) // not enough coordinates return -1; *** ../vim-9.0.0930/src/os_win32.c 2022-11-22 12:58:22.754664254 +0000 --- src/os_win32.c 2022-11-23 22:25:09.180033947 +0000 *************** *** 2055,2071 **** typeahead[typeaheadlen++] = CSI; typeahead[typeaheadlen++] = KS_EXTRA; typeahead[typeaheadlen++] = scroll_dir; - g_nMouseClick = -1; } else { typeahead[typeaheadlen++] = ESC + 128; typeahead[typeaheadlen++] = 'M'; typeahead[typeaheadlen++] = g_nMouseClick; - typeahead[typeaheadlen++] = g_xMouse + '!'; - typeahead[typeaheadlen++] = g_yMouse + '!'; - g_nMouseClick = -1; } } else { --- 2055,2077 ---- typeahead[typeaheadlen++] = CSI; typeahead[typeaheadlen++] = KS_EXTRA; typeahead[typeaheadlen++] = scroll_dir; } else { typeahead[typeaheadlen++] = ESC + 128; typeahead[typeaheadlen++] = 'M'; typeahead[typeaheadlen++] = g_nMouseClick; } + + // 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 { *** ../vim-9.0.0930/src/term.c 2022-11-23 20:19:17.129682462 +0000 --- src/term.c 2022-11-23 22:27:08.552029689 +0000 *************** *** 5857,5868 **** // We only get here when we have a complete termcode match ! #ifdef FEAT_GUI /* ! * Only in the GUI: Fetch the pointer coordinates of the scroll event ! * so that we know which window to scroll later. */ ! if (gui.in_use && key_name[0] == (int)KS_EXTRA && (key_name[1] == (int)KE_X1MOUSE || key_name[1] == (int)KE_X2MOUSE --- 5857,5871 ---- // We only get here when we have a complete termcode match ! #if defined(FEAT_GUI) || defined(MSWIN) /* ! * For scroll events from the GUI or MS-Windows console, fetch the ! * pointer coordinates so that we know which window to scroll later. */ ! if (TRUE ! # if defined(FEAT_GUI) && !defined(MSWIN) ! && gui.in_use ! # endif && key_name[0] == (int)KS_EXTRA && (key_name[1] == (int)KE_X1MOUSE || key_name[1] == (int)KE_X2MOUSE *** ../vim-9.0.0930/src/version.c 2022-11-23 20:19:17.133682464 +0000 --- src/version.c 2022-11-23 22:19:31.176010722 +0000 *************** *** 697,698 **** --- 697,700 ---- { /* Add new patch number below this line */ + /**/ + 931, /**/ -- I have a watch cat! Just break in and she'll watch. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// \\\ \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///