vim-patch:9.0.2032: cannot get mouse click pos for tab or virt text (#25653)

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: vim/vim#13335

f5a94d5165
This commit is contained in:
zeertzjq
2023-10-15 17:19:01 +08:00
committed by GitHub
parent a350fb2976
commit d974a3dcbb
8 changed files with 59 additions and 10 deletions

View File

@@ -3068,6 +3068,7 @@ func Test_getmousepos()
\ wincol: 1,
\ line: 1,
\ column: 1,
\ coladd: 0,
\ }, getmousepos())
call Ntest_setmouse(1, 2)
call assert_equal(#{
@@ -3078,6 +3079,7 @@ func Test_getmousepos()
\ wincol: 2,
\ line: 1,
\ column: 1,
\ coladd: 1,
\ }, getmousepos())
call Ntest_setmouse(1, 8)
call assert_equal(#{
@@ -3088,6 +3090,7 @@ func Test_getmousepos()
\ wincol: 8,
\ line: 1,
\ column: 1,
\ coladd: 7,
\ }, getmousepos())
call Ntest_setmouse(1, 9)
call assert_equal(#{
@@ -3098,6 +3101,7 @@ func Test_getmousepos()
\ wincol: 9,
\ line: 1,
\ column: 2,
\ coladd: 0,
\ }, getmousepos())
call Ntest_setmouse(1, 12)
call assert_equal(#{
@@ -3108,6 +3112,7 @@ func Test_getmousepos()
\ wincol: 12,
\ line: 1,
\ column: 2,
\ coladd: 3,
\ }, getmousepos())
call Ntest_setmouse(1, 25)
call assert_equal(#{
@@ -3118,6 +3123,29 @@ func Test_getmousepos()
\ wincol: 25,
\ line: 1,
\ column: 4,
\ coladd: 0,
\ }, getmousepos())
call Ntest_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 Ntest_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 Ntest_setmouse(1, 50)
call assert_equal(#{
@@ -3128,6 +3156,7 @@ func Test_getmousepos()
\ wincol: 50,
\ line: 1,
\ column: 8,
\ coladd: 21,
\ }, getmousepos())
" If the mouse is positioned past the last buffer line, "line" and "column"
@@ -3141,6 +3170,7 @@ func Test_getmousepos()
\ wincol: 25,
\ line: 1,
\ column: 4,
\ coladd: 0,
\ }, getmousepos())
call Ntest_setmouse(2, 50)
call assert_equal(#{
@@ -3151,6 +3181,7 @@ func Test_getmousepos()
\ wincol: 50,
\ line: 1,
\ column: 8,
\ coladd: 21,
\ }, getmousepos())
bwipe!
endfunc