mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
ui: multigrid mouse support
This commit is contained in:
@@ -3,9 +3,11 @@ local Screen = require('test.functional.ui.screen')
|
||||
local clear = helpers.clear
|
||||
local feed, command, insert = helpers.feed, helpers.command, helpers.insert
|
||||
local eq = helpers.eq
|
||||
local meths = helpers.meths
|
||||
local wait = helpers.wait
|
||||
|
||||
|
||||
describe('multigrid screen', function()
|
||||
describe('ext_multigrid', function()
|
||||
local screen
|
||||
|
||||
before_each(function()
|
||||
@@ -1521,4 +1523,337 @@ describe('multigrid screen', function()
|
||||
{1:~ }|
|
||||
]])
|
||||
end)
|
||||
|
||||
it('supports mouse', function()
|
||||
insert('some text\nto be clicked')
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be clicke^d |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 2, 0, 5)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some ^text |
|
||||
to be clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
feed(':new<cr>')
|
||||
insert('Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmo')
|
||||
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing el|
|
||||
it, sed do eiusm^o |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 2, 1, 6)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
{12:[No Name] [+] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be ^clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing el|
|
||||
it, sed do eiusmo |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 3, 1, 4)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing el|
|
||||
it, ^sed do eiusmo |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
screen:try_resize_grid(3, 80, 2)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, ^sed do eiusmo |
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 3, 0, 64)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do ^eiusmo |
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 1,6, 20)
|
||||
-- TODO(bfredl): "batching" input_mouse is formally not supported yet.
|
||||
-- Normally it should work fine in async context when nvim is not blocked,
|
||||
-- but add a wait be sure.
|
||||
wait()
|
||||
meths.input_mouse('left', 'drag', '', 1, 4, 20)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do ^eiusmo |
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
feed('<c-w><c-w><c-w>v')
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
{12:[No Name] [+] }|
|
||||
[4:--------------------------]{12:│}[2:--------------------------]|
|
||||
[4:--------------------------]{12:│}[2:--------------------------]|
|
||||
[4:--------------------------]{12:│}[2:--------------------------]|
|
||||
[4:--------------------------]{12:│}[2:--------------------------]|
|
||||
[4:--------------------------]{12:│}[2:--------------------------]|
|
||||
[4:--------------------------]{12:│}[2:--------------------------]|
|
||||
[4:--------------------------]{12:│}[2:--------------------------]|
|
||||
{11:[No Name] [+] }{12:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmo |
|
||||
{1:~ }|
|
||||
## grid 4
|
||||
some text |
|
||||
to be ^clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 1,8, 26)
|
||||
wait()
|
||||
meths.input_mouse('left', 'drag', '', 1, 6, 30)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
{12:[No Name] [+] }|
|
||||
[4:------------------------------]{12:│}[2:----------------------]|
|
||||
[4:------------------------------]{12:│}[2:----------------------]|
|
||||
[4:------------------------------]{12:│}[2:----------------------]|
|
||||
[4:------------------------------]{12:│}[2:----------------------]|
|
||||
[4:------------------------------]{12:│}[2:----------------------]|
|
||||
[4:------------------------------]{12:│}[2:----------------------]|
|
||||
[4:------------------------------]{12:│}[2:----------------------]|
|
||||
{11:[No Name] [+] }{12:[No Name] [+] }|
|
||||
|
|
||||
## grid 2
|
||||
some text |
|
||||
to be clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmo |
|
||||
{1:~ }|
|
||||
## grid 4
|
||||
some text |
|
||||
to be ^clicked |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user