# HG changeset patch # User Bram Moolenaar # Date 1652705103 -7200 # Node ID d5436dbdd0828e4016e941e8c4364a4cf63afff6 # Parent ae2f1551a6dcae940adac6d9853e5298195ab5fa patch 8.2.4964: MS-Windows GUI: mouse event test is flaky Commit: https://github.com/vim/vim/commit/3b675c276c71472022b684b7b1dec213824d3104 Author: Bram Moolenaar Date: Mon May 16 13:34:44 2022 +0100 patch 8.2.4964: MS-Windows GUI: mouse event test is flaky Problem: MS-Windows GUI: mouse event test is flaky. Solution: Add a short delay after generating a mouse event. diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim --- a/src/testdir/test_gui.vim +++ b/src/testdir/test_gui.vim @@ -1198,6 +1198,17 @@ func Test_gui_mouse_event() set mousemodel& endfunc +" Move the mouse to the top-left in preparation for mouse events +func PrepareForMouseEvent(args) + call extend(a:args, #{row: 1, col:1}) + call test_gui_event('mouse', a:args) + call feedkeys('', 'Lx!') + " on MS-Windows the event may have a slight delay + if has('win32') + sleep 20m + endif +endfunc + func Test_gui_mouse_move_event() let args = #{move: 1, button: 0, multiclick: 0, modifiers: 0} @@ -1205,67 +1216,59 @@ func Test_gui_mouse_move_event() set mousemev& call assert_false(&mousemev) - let n_event = 0 - nnoremap :let n_event += 1 + let g:n_event = 0 + nnoremap :let g:n_event += 1 " start at mouse pos (1,1), clear counter - call extend(args, #{row: 1, col:1}) - call test_gui_event('mouse', args) - call feedkeys('', 'Lx!') - let n_event = 0 + call PrepareForMouseEvent(args) + let g:n_event = 0 - call extend(args, #{row: 30, col:300}) + call extend(args, #{row: 30, col: 300}) call test_gui_event('mouse', args) call feedkeys('', 'Lx!') - call extend(args, #{row: 100, col:300}) + call extend(args, #{row: 100, col: 300}) call test_gui_event('mouse', args) call feedkeys('', 'Lx!') " no events since mousemev off - call assert_equal(0, n_event) + call assert_equal(0, g:n_event) " turn on mouse events and try the same thing set mousemev - call extend(args, #{row: 1, col:1}) - call test_gui_event('mouse', args) - call feedkeys('', 'Lx!') - let n_event = 0 + call PrepareForMouseEvent(args) + let g:n_event = 0 - call extend(args, #{row: 30, col:300}) + call extend(args, #{row: 30, col: 300}) call test_gui_event('mouse', args) call feedkeys('', 'Lx!') - call extend(args, #{row: 100, col:300}) + call extend(args, #{row: 100, col: 300}) call test_gui_event('mouse', args) call feedkeys('', 'Lx!') - call assert_equal(2, n_event) + call assert_equal(2, g:n_event) " wiggle the mouse around, shouldn't get events - call extend(args, #{row: 1, col:1}) - call test_gui_event('mouse', args) - call feedkeys('', 'Lx!') - let n_event = 0 + call PrepareForMouseEvent(args) + let g:n_event = 0 - call extend(args, #{row: 1, col:2}) + call extend(args, #{row: 1, col: 2}) call test_gui_event('mouse', args) call feedkeys('', 'Lx!') - call extend(args, #{row: 2, col:2}) + call extend(args, #{row: 2, col: 2}) call test_gui_event('mouse', args) call feedkeys('', 'Lx!') - call extend(args, #{row: 2, col:1}) + call extend(args, #{row: 2, col: 1}) call test_gui_event('mouse', args) call feedkeys('', 'Lx!') - call extend(args, #{row: 1, col:1}) - call test_gui_event('mouse', args) - call feedkeys('', 'Lx!') + call PrepareForMouseEvent(args) + call assert_equal(0, g:n_event) - call assert_equal(0, n_event) - + unlet g:n_event unmap set mousemev& endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4964, +/**/ 4963, /**/ 4962,