mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 11:15:14 -07:00
Merge pull request #18638 from zeertzjq/fix-winbar-mouse
Fix mouse drag position with winbar
This commit is contained in:
commit
bb8d05f932
@ -159,16 +159,16 @@ retnomove:
|
||||
fdc = win_fdccol_count(wp);
|
||||
dragwin = NULL;
|
||||
|
||||
if (row == -1 + wp->w_winbar_height) {
|
||||
on_winbar = !!wp->w_winbar_height;
|
||||
if (row == -1) {
|
||||
on_winbar = wp->w_winbar_height != 0;
|
||||
return IN_OTHER_WIN | (on_winbar ? MOUSE_WINBAR : 0);
|
||||
}
|
||||
on_winbar = false;
|
||||
|
||||
// winpos and height may change in win_enter()!
|
||||
if (grid == DEFAULT_GRID_HANDLE && row >= wp->w_height) {
|
||||
if (grid == DEFAULT_GRID_HANDLE && row + wp->w_winbar_height >= wp->w_height) {
|
||||
// In (or below) status line
|
||||
on_status_line = row - wp->w_height + 1;
|
||||
on_status_line = row + wp->w_winbar_height - wp->w_height + 1;
|
||||
dragwin = wp;
|
||||
} else {
|
||||
on_status_line = 0;
|
||||
@ -273,6 +273,9 @@ retnomove:
|
||||
if (grid == 0) {
|
||||
row -= curwin->w_grid_alloc.comp_row + curwin->w_grid.row_offset;
|
||||
col -= curwin->w_grid_alloc.comp_col + curwin->w_grid.col_offset;
|
||||
} else if (grid != DEFAULT_GRID_HANDLE) {
|
||||
row -= curwin->w_grid.row_offset;
|
||||
col -= curwin->w_grid.col_offset;
|
||||
}
|
||||
|
||||
// When clicking beyond the end of the window, scroll the screen.
|
||||
@ -406,9 +409,6 @@ bool mouse_comp_pos(win_T *win, int *rowp, int *colp, linenr_T *lnump)
|
||||
if (win->w_p_rl) {
|
||||
col = win->w_width_inner - 1 - col;
|
||||
}
|
||||
if (win->w_winbar_height) {
|
||||
row -= win->w_winbar_height;
|
||||
}
|
||||
|
||||
lnum = win->w_topline;
|
||||
|
||||
@ -509,7 +509,7 @@ win_T *mouse_find_win(int *gridp, int *rowp, int *colp)
|
||||
// exist.
|
||||
FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {
|
||||
if (wp == fp->fr_win) {
|
||||
*rowp -= wp->w_winrow_off - wp->w_winbar_height;
|
||||
*rowp -= wp->w_winbar_height;
|
||||
return wp;
|
||||
}
|
||||
}
|
||||
|
@ -6627,7 +6627,7 @@ describe('float window', function()
|
||||
|
||||
it("left drag changes visual selection in float window", function()
|
||||
local buf = meths.create_buf(false,false)
|
||||
meths.buf_set_lines(buf, 0, -1, true, {'foo', 'bar'})
|
||||
meths.buf_set_lines(buf, 0, -1, true, {'foo', 'bar', 'baz'})
|
||||
meths.open_win(buf, false, {relative='editor', width=20, height=3, row=2, col=5})
|
||||
if multigrid then
|
||||
screen:expect{grid=[[
|
||||
@ -6651,12 +6651,12 @@ describe('float window', function()
|
||||
## grid 5
|
||||
{1:foo }|
|
||||
{1:bar }|
|
||||
{2:~ }|
|
||||
{1:baz }|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 2, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 2};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 3};
|
||||
}}
|
||||
meths.input_mouse('left', 'press', '', 5, 0, 0)
|
||||
screen:expect{grid=[[
|
||||
@ -6680,12 +6680,12 @@ describe('float window', function()
|
||||
## grid 5
|
||||
{1:^foo }|
|
||||
{1:bar }|
|
||||
{2:~ }|
|
||||
{1:baz }|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 2, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 2};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 3};
|
||||
}}
|
||||
meths.input_mouse('left', 'drag', '', 5, 1, 2)
|
||||
screen:expect{grid=[[
|
||||
@ -6709,12 +6709,12 @@ describe('float window', function()
|
||||
## grid 5
|
||||
{27:foo}{1: }|
|
||||
{27:ba}{1:^r }|
|
||||
{2:~ }|
|
||||
{1:baz }|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 2, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 1, curcol = 2, linecount = 2};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 1, curcol = 2, linecount = 3};
|
||||
}}
|
||||
else
|
||||
screen:expect{grid=[[
|
||||
@ -6722,7 +6722,7 @@ describe('float window', function()
|
||||
{0:~ }|
|
||||
{0:~ }{1:foo }{0: }|
|
||||
{0:~ }{1:bar }{0: }|
|
||||
{0:~ }{2:~ }{0: }|
|
||||
{0:~ }{1:baz }{0: }|
|
||||
{0:~ }|
|
||||
|
|
||||
]]}
|
||||
@ -6733,7 +6733,7 @@ describe('float window', function()
|
||||
{0:~ }|
|
||||
{0:~ }{1:^foo }{0: }|
|
||||
{0:~ }{1:bar }{0: }|
|
||||
{0:~ }{2:~ }{0: }|
|
||||
{0:~ }{1:baz }{0: }|
|
||||
{0:~ }|
|
||||
|
|
||||
]]}
|
||||
@ -6744,7 +6744,269 @@ describe('float window', function()
|
||||
{0:~ }|
|
||||
{0:~ }{27:foo}{1: }{0: }|
|
||||
{0:~ }{27:ba}{1:^r }{0: }|
|
||||
{0:~ }{2:~ }{0: }|
|
||||
{0:~ }{1:baz }{0: }|
|
||||
{0:~ }|
|
||||
{3:-- VISUAL --} |
|
||||
]]}
|
||||
end
|
||||
end)
|
||||
|
||||
it("left drag changes visual selection in float window with border", function()
|
||||
local buf = meths.create_buf(false,false)
|
||||
meths.buf_set_lines(buf, 0, -1, true, {'foo', 'bar', 'baz'})
|
||||
meths.open_win(buf, false, {relative='editor', width=20, height=3, row=0, col=5, border='single'})
|
||||
if multigrid then
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[3:----------------------------------------]|
|
||||
## grid 2
|
||||
^ |
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 5
|
||||
{5:┌────────────────────┐}|
|
||||
{5:│}{1:foo }{5:│}|
|
||||
{5:│}{1:bar }{5:│}|
|
||||
{5:│}{1:baz }{5:│}|
|
||||
{5:└────────────────────┘}|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 0, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 3};
|
||||
}}
|
||||
meths.input_mouse('left', 'press', '', 5, 1, 1)
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[3:----------------------------------------]|
|
||||
## grid 2
|
||||
|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 5
|
||||
{5:┌────────────────────┐}|
|
||||
{5:│}{1:^foo }{5:│}|
|
||||
{5:│}{1:bar }{5:│}|
|
||||
{5:│}{1:baz }{5:│}|
|
||||
{5:└────────────────────┘}|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 0, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 3};
|
||||
}}
|
||||
meths.input_mouse('left', 'drag', '', 5, 2, 3)
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[3:----------------------------------------]|
|
||||
## grid 2
|
||||
|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
## grid 3
|
||||
{3:-- VISUAL --} |
|
||||
## grid 5
|
||||
{5:┌────────────────────┐}|
|
||||
{5:│}{27:foo}{1: }{5:│}|
|
||||
{5:│}{27:ba}{1:^r }{5:│}|
|
||||
{5:│}{1:baz }{5:│}|
|
||||
{5:└────────────────────┘}|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 0, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 1, curcol = 2, linecount = 3};
|
||||
}}
|
||||
else
|
||||
screen:expect{grid=[[
|
||||
^ {5:┌────────────────────┐} |
|
||||
{0:~ }{5:│}{1:foo }{5:│}{0: }|
|
||||
{0:~ }{5:│}{1:bar }{5:│}{0: }|
|
||||
{0:~ }{5:│}{1:baz }{5:│}{0: }|
|
||||
{0:~ }{5:└────────────────────┘}{0: }|
|
||||
{0:~ }|
|
||||
|
|
||||
]]}
|
||||
|
||||
meths.input_mouse('left', 'press', '', 0, 1, 6)
|
||||
screen:expect{grid=[[
|
||||
{5:┌────────────────────┐} |
|
||||
{0:~ }{5:│}{1:^foo }{5:│}{0: }|
|
||||
{0:~ }{5:│}{1:bar }{5:│}{0: }|
|
||||
{0:~ }{5:│}{1:baz }{5:│}{0: }|
|
||||
{0:~ }{5:└────────────────────┘}{0: }|
|
||||
{0:~ }|
|
||||
|
|
||||
]]}
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 0, 2, 8)
|
||||
screen:expect{grid=[[
|
||||
{5:┌────────────────────┐} |
|
||||
{0:~ }{5:│}{27:foo}{1: }{5:│}{0: }|
|
||||
{0:~ }{5:│}{27:ba}{1:^r }{5:│}{0: }|
|
||||
{0:~ }{5:│}{1:baz }{5:│}{0: }|
|
||||
{0:~ }{5:└────────────────────┘}{0: }|
|
||||
{0:~ }|
|
||||
{3:-- VISUAL --} |
|
||||
]]}
|
||||
end
|
||||
end)
|
||||
|
||||
it("left drag changes visual selection in float window with winbar", function()
|
||||
local buf = meths.create_buf(false,false)
|
||||
meths.buf_set_lines(buf, 0, -1, true, {'foo', 'bar', 'baz'})
|
||||
local float_win = meths.open_win(buf, false, {relative='editor', width=20, height=4, row=1, col=5})
|
||||
meths.win_set_option(float_win, 'winbar', 'floaty bar')
|
||||
if multigrid then
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[3:----------------------------------------]|
|
||||
## grid 2
|
||||
^ |
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 5
|
||||
{3:floaty bar }|
|
||||
{1:foo }|
|
||||
{1:bar }|
|
||||
{1:baz }|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 1, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 3};
|
||||
}}
|
||||
meths.input_mouse('left', 'press', '', 5, 1, 0)
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[3:----------------------------------------]|
|
||||
## grid 2
|
||||
|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 5
|
||||
{3:floaty bar }|
|
||||
{1:^foo }|
|
||||
{1:bar }|
|
||||
{1:baz }|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 1, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 0, curcol = 0, linecount = 3};
|
||||
}}
|
||||
meths.input_mouse('left', 'drag', '', 5, 2, 2)
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[2:----------------------------------------]|
|
||||
[3:----------------------------------------]|
|
||||
## grid 2
|
||||
|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
{0:~ }|
|
||||
## grid 3
|
||||
{3:-- VISUAL --} |
|
||||
## grid 5
|
||||
{3:floaty bar }|
|
||||
{27:foo}{1: }|
|
||||
{27:ba}{1:^r }|
|
||||
{1:baz }|
|
||||
]], float_pos={
|
||||
[5] = {{id = 1002}, "NW", 1, 1, 5, true, 50};
|
||||
}, win_viewport={
|
||||
[2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
[5] = {win = {id = 1002}, topline = 0, botline = 3, curline = 1, curcol = 2, linecount = 3};
|
||||
}}
|
||||
else
|
||||
screen:expect{grid=[[
|
||||
^ |
|
||||
{0:~ }{3:floaty bar }{0: }|
|
||||
{0:~ }{1:foo }{0: }|
|
||||
{0:~ }{1:bar }{0: }|
|
||||
{0:~ }{1:baz }{0: }|
|
||||
{0:~ }|
|
||||
|
|
||||
]]}
|
||||
|
||||
meths.input_mouse('left', 'press', '', 0, 2, 5)
|
||||
screen:expect{grid=[[
|
||||
|
|
||||
{0:~ }{3:floaty bar }{0: }|
|
||||
{0:~ }{1:^foo }{0: }|
|
||||
{0:~ }{1:bar }{0: }|
|
||||
{0:~ }{1:baz }{0: }|
|
||||
{0:~ }|
|
||||
|
|
||||
]]}
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 0, 3, 7)
|
||||
screen:expect{grid=[[
|
||||
|
|
||||
{0:~ }{3:floaty bar }{0: }|
|
||||
{0:~ }{27:foo}{1: }{0: }|
|
||||
{0:~ }{27:ba}{1:^r }{0: }|
|
||||
{0:~ }{1:baz }{0: }|
|
||||
{0:~ }|
|
||||
{3:-- VISUAL --} |
|
||||
]]}
|
||||
|
@ -1915,7 +1915,7 @@ describe('ext_multigrid', function()
|
||||
{1:~ }|
|
||||
]]}
|
||||
|
||||
meths.input_mouse('left', 'press', '', 1,6, 20)
|
||||
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 poke_eventloop be sure.
|
||||
@ -2092,7 +2092,6 @@ describe('ext_multigrid', function()
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]]}
|
||||
|
||||
end)
|
||||
|
||||
it('has viewport information', function()
|
||||
@ -2409,4 +2408,183 @@ describe('ext_multigrid', function()
|
||||
[4] = {win = {id = 1001}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1};
|
||||
}}
|
||||
end)
|
||||
|
||||
it('with winbar dragging statusline with mouse works correctly', function()
|
||||
meths.set_option('winbar', 'Set Up The Bars')
|
||||
command('split')
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
{11:[No Name] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] }|
|
||||
[3:-----------------------------------------------------]|
|
||||
## grid 2
|
||||
{7:Set Up The Bars }|
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 4
|
||||
{7:Set Up The Bars }|
|
||||
^ |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 1, 6, 20)
|
||||
poke_eventloop()
|
||||
meths.input_mouse('left', 'drag', '', 1, 7, 20)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
{11:[No Name] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] }|
|
||||
[3:-----------------------------------------------------]|
|
||||
## grid 2
|
||||
{7:Set Up The Bars }|
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 4
|
||||
{7:Set Up The Bars }|
|
||||
^ |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 1, 4, 20)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
{11:[No Name] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] }|
|
||||
[3:-----------------------------------------------------]|
|
||||
## grid 2
|
||||
{7:Set Up The Bars }|
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 4
|
||||
{7:Set Up The Bars }|
|
||||
^ |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 1, 12, 10)
|
||||
poke_eventloop()
|
||||
meths.input_mouse('left', 'drag', '', 1, 10, 10)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
{11:[No Name] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] }|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
[3:-----------------------------------------------------]|
|
||||
## grid 2
|
||||
{7:Set Up The Bars }|
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
|
|
||||
|
|
||||
|
|
||||
## grid 4
|
||||
{7:Set Up The Bars }|
|
||||
^ |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
eq(3, meths.get_option('cmdheight'))
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 1, 12, 10)
|
||||
screen:expect([[
|
||||
## grid 1
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
[4:-----------------------------------------------------]|
|
||||
{11:[No Name] }|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{12:[No Name] }|
|
||||
[3:-----------------------------------------------------]|
|
||||
## grid 2
|
||||
{7:Set Up The Bars }|
|
||||
|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 4
|
||||
{7:Set Up The Bars }|
|
||||
^ |
|
||||
{1:~ }|
|
||||
{1:~ }|
|
||||
]])
|
||||
eq(1, meths.get_option('cmdheight'))
|
||||
end)
|
||||
end)
|
||||
|
@ -5,6 +5,7 @@ local command = helpers.command
|
||||
local insert = helpers.insert
|
||||
local meths = helpers.meths
|
||||
local eq = helpers.eq
|
||||
local poke_eventloop = helpers.poke_eventloop
|
||||
|
||||
describe('winbar', function()
|
||||
local screen
|
||||
@ -20,8 +21,9 @@ describe('winbar', function()
|
||||
[4] = {bold = true, reverse = true},
|
||||
[5] = {bold = true, foreground = Screen.colors.Red},
|
||||
[6] = {foreground = Screen.colors.Blue},
|
||||
[7] = {background = Screen.colors.LightGrey},
|
||||
})
|
||||
command('set winbar=Set\\ Up\\ The\\ Bars')
|
||||
meths.set_option('winbar', 'Set Up The Bars')
|
||||
end)
|
||||
it('works', function()
|
||||
screen:expect([[
|
||||
@ -180,8 +182,9 @@ describe('winbar', function()
|
||||
|
|
||||
]])
|
||||
end)
|
||||
it('sets correct position on mouse click', function()
|
||||
insert[[
|
||||
|
||||
it('mouse click and drag work correctly in buffer', function()
|
||||
insert([[
|
||||
line 1
|
||||
line 2
|
||||
line 3
|
||||
@ -189,9 +192,157 @@ describe('winbar', function()
|
||||
line -42
|
||||
line i
|
||||
line sin(theta)
|
||||
line 8
|
||||
]]
|
||||
line 8]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 0, 5, 1)
|
||||
screen:expect([[
|
||||
{1:Set Up The Bars }|
|
||||
line 1 |
|
||||
line 2 |
|
||||
line 3 |
|
||||
line 4 |
|
||||
l^ine -42 |
|
||||
line i |
|
||||
line sin(theta) |
|
||||
line 8 |
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
|
|
||||
]])
|
||||
eq({5, 1}, meths.win_get_cursor(0))
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 0, 6, 2)
|
||||
screen:expect([[
|
||||
{1:Set Up The Bars }|
|
||||
line 1 |
|
||||
line 2 |
|
||||
line 3 |
|
||||
line 4 |
|
||||
l{7:ine -42} |
|
||||
{7:li}^ne i |
|
||||
line sin(theta) |
|
||||
line 8 |
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{1:-- VISUAL --} |
|
||||
]])
|
||||
eq({6, 2}, meths.win_get_cursor(0))
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 0, 1, 2)
|
||||
screen:expect([[
|
||||
{1:Set Up The Bars }|
|
||||
li^n{7:e 1} |
|
||||
{7:line 2} |
|
||||
{7:line 3} |
|
||||
{7:line 4} |
|
||||
{7:li}ne -42 |
|
||||
line i |
|
||||
line sin(theta) |
|
||||
line 8 |
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{1:-- VISUAL --} |
|
||||
]])
|
||||
eq({1, 2}, meths.win_get_cursor(0))
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 0, 0, 2)
|
||||
screen:expect_unchanged()
|
||||
eq({1, 2}, meths.win_get_cursor(0))
|
||||
end)
|
||||
|
||||
it('dragging statusline with mouse works correctly', function()
|
||||
command('split')
|
||||
screen:expect([[
|
||||
{1:Set Up The Bars }|
|
||||
^ |
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{4:[No Name] }|
|
||||
{1:Set Up The Bars }|
|
||||
|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{2:[No Name] }|
|
||||
|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 1, 5, 10)
|
||||
poke_eventloop()
|
||||
meths.input_mouse('left', 'drag', '', 1, 6, 10)
|
||||
screen:expect([[
|
||||
{1:Set Up The Bars }|
|
||||
^ |
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{4:[No Name] }|
|
||||
{1:Set Up The Bars }|
|
||||
|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{2:[No Name] }|
|
||||
|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 1, 4, 10)
|
||||
screen:expect([[
|
||||
{1:Set Up The Bars }|
|
||||
^ |
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{4:[No Name] }|
|
||||
{1:Set Up The Bars }|
|
||||
|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{2:[No Name] }|
|
||||
|
|
||||
]])
|
||||
|
||||
meths.input_mouse('left', 'press', '', 1, 11, 10)
|
||||
poke_eventloop()
|
||||
meths.input_mouse('left', 'drag', '', 1, 9, 10)
|
||||
screen:expect([[
|
||||
{1:Set Up The Bars }|
|
||||
^ |
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{4:[No Name] }|
|
||||
{1:Set Up The Bars }|
|
||||
|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{2:[No Name] }|
|
||||
|
|
||||
|
|
||||
|
|
||||
]])
|
||||
eq(3, meths.get_option('cmdheight'))
|
||||
|
||||
meths.input_mouse('left', 'drag', '', 1, 11, 10)
|
||||
screen:expect([[
|
||||
{1:Set Up The Bars }|
|
||||
^ |
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{4:[No Name] }|
|
||||
{1:Set Up The Bars }|
|
||||
|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{3:~ }|
|
||||
{2:[No Name] }|
|
||||
|
|
||||
]])
|
||||
eq(1, meths.get_option('cmdheight'))
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user