From bb8476be871811e40ddc88c598d9e553aba7fb79 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 4 May 2019 15:47:48 +0200 Subject: [PATCH] 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(). --- runtime/doc/eval.txt | 8 ++++++++ runtime/doc/usr_41.txt | 3 ++- src/evalfunc.c | 9 +++++++++ src/version.c | 2 ++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 8faf17f63..c12e69e4a 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2700,6 +2700,7 @@ test_override({expr}, {val}) none test with Vim internal overrides 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}, {dragging}) *test_scrollbar()* 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("\", "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 diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index c95dca66a..cef6fd793 100644 --- 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 diff --git a/src/evalfunc.c b/src/evalfunc.c index 2b1b1424c..7b6785cfa 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -456,6 +456,7 @@ static void f_test_null_string(typval_T *argvars, typval_T *rettv); #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}, @@ -14493,6 +14495,13 @@ f_test_scrollbar(typval_T *argvars, typval_T *rettv UNUSED) } #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) { diff --git a/src/version.c b/src/version.c index d78ef3db7..07f3962fb 100644 --- a/src/version.c +++ b/src/version.c @@ -767,6 +767,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1262, /**/ 1261, /**/ -- 2.40.0