changeset 28883:d5436dbdd082 v8.2.4964

patch 8.2.4964: MS-Windows GUI: mouse event test is flaky Commit: https://github.com/vim/vim/commit/3b675c276c71472022b684b7b1dec213824d3104 Author: Bram Moolenaar <Bram@vim.org> 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.
author Bram Moolenaar <Bram@vim.org>
date Mon, 16 May 2022 14:45:03 +0200
parents ae2f1551a6dc
children 92795eafa0d6
files src/testdir/test_gui.vim src/version.c
diffstat 2 files changed, 33 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- 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 <special> <MouseMove> :let n_event += 1<CR>
+  let g:n_event = 0
+  nnoremap <special> <MouseMove> :let g:n_event += 1<CR>
 
   " 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 <MouseMove>
   set mousemev&
 endfunc
--- 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,