mirror of
https://github.com/neovim/neovim.git
synced 2026-07-12 20:30:35 +00:00
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:
@@ -2155,13 +2155,14 @@ describe("folded lines", function()
|
||||
|
||||
meths.input_mouse('left', 'press', '', multigrid and 2 or 0, 4, 0)
|
||||
eq({
|
||||
column = 1,
|
||||
line = 3,
|
||||
screencol = 1,
|
||||
screenrow = 5,
|
||||
wincol = 1,
|
||||
winid = 1000,
|
||||
wincol = 1,
|
||||
winrow = 5,
|
||||
line = 3,
|
||||
column = 1,
|
||||
coladd = 0,
|
||||
}, funcs.getmousepos())
|
||||
|
||||
meths.buf_set_extmark(0, ns, 1, 0, { virt_lines = {{{"more virt_line below line 2", ""}}} })
|
||||
|
||||
@@ -1717,6 +1717,7 @@ describe('ui/mouse/input', function()
|
||||
eq(0, mousepos.wincol)
|
||||
eq(0, mousepos.line)
|
||||
eq(0, mousepos.column)
|
||||
eq(0, mousepos.coladd)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1736,15 +1737,18 @@ describe('ui/mouse/input', function()
|
||||
eq(win_col + 1, mousepos.wincol)
|
||||
local line = 0
|
||||
local column = 0
|
||||
local coladd = 0
|
||||
if win_row > 0 and win_row < opts.height + 1
|
||||
and win_col > 0 and win_col < opts.width + 1 then
|
||||
-- Because of border, win_row and win_col don't need to be
|
||||
-- incremented by 1.
|
||||
line = math.min(win_row, funcs.line('$'))
|
||||
column = math.min(win_col, #funcs.getline(line) + 1)
|
||||
coladd = win_col - column
|
||||
end
|
||||
eq(line, mousepos.line)
|
||||
eq(column, mousepos.column)
|
||||
eq(coladd, mousepos.coladd)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1764,8 +1768,10 @@ describe('ui/mouse/input', function()
|
||||
eq(win_col + 1, mousepos.wincol)
|
||||
local line = math.min(win_row + 1, funcs.line('$'))
|
||||
local column = math.min(win_col + 1, #funcs.getline(line) + 1)
|
||||
local coladd = win_col + 1 - column
|
||||
eq(line, mousepos.line)
|
||||
eq(column, mousepos.column)
|
||||
eq(coladd, mousepos.coladd)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1788,8 +1794,10 @@ describe('ui/mouse/input', function()
|
||||
eq(win_col + 1, mousepos.wincol)
|
||||
local line = math.min(win_row + 1, funcs.line('$'))
|
||||
local column = math.min(win_col + 1, #funcs.getline(line) + 1)
|
||||
local coladd = win_col + 1 - column
|
||||
eq(line, mousepos.line)
|
||||
eq(column, mousepos.column)
|
||||
eq(coladd, mousepos.coladd)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user