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.
This commit is contained in:
@ -1198,6 +1198,17 @@ func Test_gui_mouse_event()
|
|||||||
set mousemodel&
|
set mousemodel&
|
||||||
endfunc
|
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()
|
func Test_gui_mouse_move_event()
|
||||||
let args = #{move: 1, button: 0, multiclick: 0, modifiers: 0}
|
let args = #{move: 1, button: 0, multiclick: 0, modifiers: 0}
|
||||||
|
|
||||||
@ -1205,67 +1216,59 @@ func Test_gui_mouse_move_event()
|
|||||||
set mousemev&
|
set mousemev&
|
||||||
call assert_false(&mousemev)
|
call assert_false(&mousemev)
|
||||||
|
|
||||||
let n_event = 0
|
let g:n_event = 0
|
||||||
nnoremap <special> <MouseMove> :let n_event += 1<CR>
|
nnoremap <special> <MouseMove> :let g:n_event += 1<CR>
|
||||||
|
|
||||||
" start at mouse pos (1,1), clear counter
|
" start at mouse pos (1,1), clear counter
|
||||||
call extend(args, #{row: 1, col:1})
|
call PrepareForMouseEvent(args)
|
||||||
call test_gui_event('mouse', args)
|
let g:n_event = 0
|
||||||
call feedkeys('', 'Lx!')
|
|
||||||
let n_event = 0
|
|
||||||
|
|
||||||
call extend(args, #{row: 30, col:300})
|
call extend(args, #{row: 30, col: 300})
|
||||||
call test_gui_event('mouse', args)
|
call test_gui_event('mouse', args)
|
||||||
call feedkeys('', 'Lx!')
|
call feedkeys('', 'Lx!')
|
||||||
|
|
||||||
call extend(args, #{row: 100, col:300})
|
call extend(args, #{row: 100, col: 300})
|
||||||
call test_gui_event('mouse', args)
|
call test_gui_event('mouse', args)
|
||||||
call feedkeys('', 'Lx!')
|
call feedkeys('', 'Lx!')
|
||||||
|
|
||||||
" no events since mousemev off
|
" 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
|
" turn on mouse events and try the same thing
|
||||||
set mousemev
|
set mousemev
|
||||||
call extend(args, #{row: 1, col:1})
|
call PrepareForMouseEvent(args)
|
||||||
call test_gui_event('mouse', args)
|
let g:n_event = 0
|
||||||
call feedkeys('', 'Lx!')
|
|
||||||
let n_event = 0
|
|
||||||
|
|
||||||
call extend(args, #{row: 30, col:300})
|
call extend(args, #{row: 30, col: 300})
|
||||||
call test_gui_event('mouse', args)
|
call test_gui_event('mouse', args)
|
||||||
call feedkeys('', 'Lx!')
|
call feedkeys('', 'Lx!')
|
||||||
|
|
||||||
call extend(args, #{row: 100, col:300})
|
call extend(args, #{row: 100, col: 300})
|
||||||
call test_gui_event('mouse', args)
|
call test_gui_event('mouse', args)
|
||||||
call feedkeys('', 'Lx!')
|
call feedkeys('', 'Lx!')
|
||||||
|
|
||||||
call assert_equal(2, n_event)
|
call assert_equal(2, g:n_event)
|
||||||
|
|
||||||
" wiggle the mouse around, shouldn't get events
|
" wiggle the mouse around, shouldn't get events
|
||||||
call extend(args, #{row: 1, col:1})
|
call PrepareForMouseEvent(args)
|
||||||
call test_gui_event('mouse', args)
|
let g:n_event = 0
|
||||||
call feedkeys('', 'Lx!')
|
|
||||||
let n_event = 0
|
|
||||||
|
|
||||||
call extend(args, #{row: 1, col:2})
|
call extend(args, #{row: 1, col: 2})
|
||||||
call test_gui_event('mouse', args)
|
call test_gui_event('mouse', args)
|
||||||
call feedkeys('', 'Lx!')
|
call feedkeys('', 'Lx!')
|
||||||
|
|
||||||
call extend(args, #{row: 2, col:2})
|
call extend(args, #{row: 2, col: 2})
|
||||||
call test_gui_event('mouse', args)
|
call test_gui_event('mouse', args)
|
||||||
call feedkeys('', 'Lx!')
|
call feedkeys('', 'Lx!')
|
||||||
|
|
||||||
call extend(args, #{row: 2, col:1})
|
call extend(args, #{row: 2, col: 1})
|
||||||
call test_gui_event('mouse', args)
|
call test_gui_event('mouse', args)
|
||||||
call feedkeys('', 'Lx!')
|
call feedkeys('', 'Lx!')
|
||||||
|
|
||||||
call extend(args, #{row: 1, col:1})
|
call PrepareForMouseEvent(args)
|
||||||
call test_gui_event('mouse', args)
|
call assert_equal(0, g:n_event)
|
||||||
call feedkeys('', 'Lx!')
|
|
||||||
|
|
||||||
call assert_equal(0, n_event)
|
|
||||||
|
|
||||||
|
unlet g:n_event
|
||||||
unmap <MouseMove>
|
unmap <MouseMove>
|
||||||
set mousemev&
|
set mousemev&
|
||||||
endfunc
|
endfunc
|
||||||
|
|||||||
@ -746,6 +746,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 */
|
||||||
|
/**/
|
||||||
|
4964,
|
||||||
/**/
|
/**/
|
||||||
4963,
|
4963,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user