patch 9.0.2032: cannot get mouse click pos for tab or virt text
Problem: Cannot accurately get mouse clicking position when clicking on
a TAB or with virtual text.
Solution: Add a "coladd" field to getmousepos() result.
closes: #13335
Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 50b7fb2..d598966 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -3365,6 +3365,7 @@
\ wincol: 1,
\ line: 1,
\ column: 1,
+ \ coladd: 0,
\ }, getmousepos())
call test_setmouse(1, 2)
call assert_equal(#{
@@ -3375,6 +3376,7 @@
\ wincol: 2,
\ line: 1,
\ column: 1,
+ \ coladd: 1,
\ }, getmousepos())
call test_setmouse(1, 8)
call assert_equal(#{
@@ -3385,6 +3387,7 @@
\ wincol: 8,
\ line: 1,
\ column: 1,
+ \ coladd: 7,
\ }, getmousepos())
call test_setmouse(1, 9)
call assert_equal(#{
@@ -3395,6 +3398,7 @@
\ wincol: 9,
\ line: 1,
\ column: 2,
+ \ coladd: 0,
\ }, getmousepos())
call test_setmouse(1, 12)
call assert_equal(#{
@@ -3405,6 +3409,7 @@
\ wincol: 12,
\ line: 1,
\ column: 2,
+ \ coladd: 3,
\ }, getmousepos())
call test_setmouse(1, 25)
call assert_equal(#{
@@ -3415,6 +3420,29 @@
\ wincol: 25,
\ line: 1,
\ column: 4,
+ \ coladd: 0,
+ \ }, getmousepos())
+ call test_setmouse(1, 28)
+ call assert_equal(#{
+ \ screenrow: 1,
+ \ screencol: 28,
+ \ winid: win_getid(),
+ \ winrow: 1,
+ \ wincol: 28,
+ \ line: 1,
+ \ column: 7,
+ \ coladd: 0,
+ \ }, getmousepos())
+ call test_setmouse(1, 29)
+ call assert_equal(#{
+ \ screenrow: 1,
+ \ screencol: 29,
+ \ winid: win_getid(),
+ \ winrow: 1,
+ \ wincol: 29,
+ \ line: 1,
+ \ column: 8,
+ \ coladd: 0,
\ }, getmousepos())
call test_setmouse(1, 50)
call assert_equal(#{
@@ -3425,6 +3453,7 @@
\ wincol: 50,
\ line: 1,
\ column: 8,
+ \ coladd: 21,
\ }, getmousepos())
" If the mouse is positioned past the last buffer line, "line" and "column"
@@ -3438,6 +3467,7 @@
\ wincol: 25,
\ line: 1,
\ column: 4,
+ \ coladd: 0,
\ }, getmousepos())
call test_setmouse(2, 50)
call assert_equal(#{
@@ -3448,6 +3478,7 @@
\ wincol: 50,
\ line: 1,
\ column: 8,
+ \ coladd: 21,
\ }, getmousepos())
bwipe!
endfunc