neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit af1b61f342618aa8d27c6e1dcbb0e360920ca89e
parent fce0d54eb2bcfff6903649ab093603dcd8f21f23
Author: bfredl <bjorn.linse@gmail.com>
Date:   Sat,  2 Apr 2022 12:47:40 +0200

Merge pull request #17961 from zeertzjq/scroll-no-multiclick

fix(input): do not translate scroll keys into multiclicks
Diffstat:
Msrc/nvim/os/input.c | 9+++++++--
Mtest/functional/ui/mouse_spec.lua | 19+++++++++++++++++++
2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/nvim/os/input.c b/src/nvim/os/input.c @@ -288,8 +288,13 @@ static uint8_t check_multiclick(int code, int grid, int row, int col) static int orig_mouse_row = 0; static uint64_t orig_mouse_time = 0; // time of previous mouse click - if (code == KE_LEFTRELEASE || code == KE_RIGHTRELEASE - || code == KE_MIDDLERELEASE) { + if (code == KE_LEFTRELEASE + || code == KE_RIGHTRELEASE + || code == KE_MIDDLERELEASE + || code == KE_MOUSEDOWN + || code == KE_MOUSEUP + || code == KE_MOUSELEFT + || code == KE_MOUSERIGHT) { return 0; } uint64_t mouse_time = os_hrtime(); // time of current mouse click (ns) diff --git a/test/functional/ui/mouse_spec.lua b/test/functional/ui/mouse_spec.lua @@ -1571,4 +1571,23 @@ describe('ui/mouse/input', function() meths.set_option('winwidth', winwidth) meths.input_mouse('left', 'release', '', 0, 0, 0) end) + + it('scroll keys are not translated into multiclicks #6211 #6989', function() + meths.set_var('mouse_up', 0) + meths.set_var('mouse_up2', 0) + meths.set_var('mouse_up3', 0) + meths.set_var('mouse_up4', 0) + command('nnoremap <ScrollWheelUp> <Cmd>let g:mouse_up += 1<CR>') + command('nnoremap <2-ScrollWheelUp> <Cmd>let g:mouse_up2 += 1<CR>') + command('nnoremap <3-ScrollWheelUp> <Cmd>let g:mouse_up3 += 1<CR>') + command('nnoremap <4-ScrollWheelUp> <Cmd>let g:mouse_up4 += 1<CR>') + meths.input_mouse('wheel', 'up', '', 0, 0, 0) + meths.input_mouse('wheel', 'up', '', 0, 0, 0) + meths.input_mouse('wheel', 'up', '', 0, 0, 0) + meths.input_mouse('wheel', 'up', '', 0, 0, 0) + eq(4, meths.get_var('mouse_up')) + eq(0, meths.get_var('mouse_up2')) + eq(0, meths.get_var('mouse_up3')) + eq(0, meths.get_var('mouse_up4')) + end) end)