diff options
-rw-r--r-- | src/nvim/os/input.c | 9 | ||||
-rw-r--r-- | test/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 index c6c4990334..745b888b5e 100644 --- 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 index baacef358f..8d3c312def 100644 --- 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) |