changeset 16517:9484fc00ac6b v8.1.1262

patch 8.1.1262: cannot simulate a mouse click in a test commit https://github.com/vim/vim/commit/bb8476be871811e40ddc88c598d9e553aba7fb79 Author: Bram Moolenaar <Bram@vim.org> Date: Sat May 4 15:47:48 2019 +0200 patch 8.1.1262: cannot simulate a mouse click in a test Problem: Cannot simulate a mouse click in a test. Solution: Add test_setmouse().
author Bram Moolenaar <Bram@vim.org>
date Sat, 04 May 2019 16:00:05 +0200
parents c4a98e19390b
children e8b6651eb131
files runtime/doc/eval.txt runtime/doc/usr_41.txt src/evalfunc.c src/version.c
diffstat 4 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -2700,6 +2700,7 @@ test_override({expr}, {val})	none	test w
 test_refcount({expr})		Number	get the reference count of {expr}
 test_scrollbar({which}, {value}, {dragging})
 				none	scroll in the GUI for testing
+test_setmouse({row}, {col})	none	set the mouse position for testing
 test_settime({expr})		none	set current time for testing
 timer_info([{id}])		List	information about timers
 timer_pause({id}, {pause})	none	pause or unpause a timer
@@ -9841,6 +9842,13 @@ test_scrollbar({which}, {value}, {draggi
 		Only works when the {which} scrollbar actually exists,
 		obviously only when using the GUI.
 
+test_setmouse({row}, {col})				*test_setmouse()*
+		Set the mouse position to be used for the next mouse action.
+		{row} and {col} are one based.
+		For example: >
+			call test_setmouse(4, 20)
+			call feedkeys("\<LeftMouse>", "xt")
+
 test_settime({expr})					*test_settime()*
 		Set the time Vim uses internally.  Currently only used for
 		timestamps in the history, as they are used in viminfo, and
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*	For Vim version 8.1.  Last change: 2019 Apr 06
+*usr_41.txt*	For Vim version 8.1.  Last change: 2019 May 04
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -955,6 +955,7 @@ Testing:				    *test-functions*
 	test_null_partial()	return a null Partial function
 	test_null_string()	return a null String
 	test_settime()		set the time Vim uses internally
+	test_setmouse()		set the mouse position
 	test_feedinput()	add key sequence to input buffer
 	test_option_not_set()	reset flag indicating option was set
 	test_scrollbar()	simulate scrollbar movement in the GUI
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -456,6 +456,7 @@ static void f_test_null_string(typval_T 
 #ifdef FEAT_GUI
 static void f_test_scrollbar(typval_T *argvars, typval_T *rettv);
 #endif
+static void f_test_setmouse(typval_T *argvars, typval_T *rettv);
 static void f_test_settime(typval_T *argvars, typval_T *rettv);
 #ifdef FEAT_FLOAT
 static void f_tan(typval_T *argvars, typval_T *rettv);
@@ -993,6 +994,7 @@ static struct fst
 #ifdef FEAT_GUI
     {"test_scrollbar",	3, 3, f_test_scrollbar},
 #endif
+    {"test_setmouse",	2, 2, f_test_setmouse},
     {"test_settime",	1, 1, f_test_settime},
 #ifdef FEAT_TIMERS
     {"timer_info",	0, 1, f_timer_info},
@@ -14494,6 +14496,13 @@ f_test_scrollbar(typval_T *argvars, typv
 #endif
 
     static void
+f_test_setmouse(typval_T *argvars, typval_T *rettv UNUSED)
+{
+    mouse_row = (time_t)tv_get_number(&argvars[0]) - 1;
+    mouse_col = (time_t)tv_get_number(&argvars[1]) - 1;
+}
+
+    static void
 f_test_settime(typval_T *argvars, typval_T *rettv UNUSED)
 {
     time_for_testing = (time_t)tv_get_number(&argvars[0]);
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1262,
+/**/
     1261,
 /**/
     1260,