fix(pum): show right-click menu above cmdline area

This commit is contained in:
zeertzjq 2023-04-24 08:39:19 +08:00
parent e3f36377c1
commit 1d7172e925
2 changed files with 11 additions and 12 deletions

View File

@ -399,6 +399,7 @@ void pum_display(pumitem_T *array, int size, int selected, bool array_changed, i
// room the window size will keep changing.
} while (pum_set_selected(selected, redo_count) && (++redo_count <= 2));
pum_grid.zindex = (State == MODE_CMDLINE) ? kZIndexCmdlinePopupMenu : kZIndexPopupMenu;
pum_redraw();
}
@ -443,9 +444,6 @@ void pum_redraw(void)
grid_assign_handle(&pum_grid);
pum_grid.zindex = ((State == MODE_CMDLINE)
? kZIndexCmdlinePopupMenu : kZIndexPopupMenu);
bool moved = ui_comp_put_grid(&pum_grid, pum_row, pum_col - col_off,
pum_height, grid_width, false, true);
bool invalid_grid = moved || pum_invalid;
@ -1088,6 +1086,7 @@ void pum_show_popupmenu(vimmenu_T *menu)
for (;;) {
pum_is_visible = true;
pum_is_drawn = true;
pum_grid.zindex = kZIndexCmdlinePopupMenu; // show above cmdline area #23275
pum_redraw();
setcursor_mayforce(true);

View File

@ -3259,16 +3259,16 @@ describe('builtin popupmenu', function()
:let g:menustr = 'bar' |
]])
eq('bar', meths.get_var('menustr'))
feed('<RightMouse><20,1>')
feed('<RightMouse><20,2>')
screen:expect([[
^popup menu test |
{1:~ }|
{1:~ }|
{1:~ }{n: foo }{1: }|
{1:~ }{n: bar }{1: }|
{1:~ }{n: baz }{1: }|
:let g:menustr = 'bar' |
:let g:menustr = 'b{n: baz } |
]])
feed('<LeftMouse><22,4>')
feed('<LeftMouse><22,5>')
screen:expect([[
^popup menu test |
{1:~ }|
@ -3675,7 +3675,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function()
{n: foo }|
{n: bar }|
{n: baz }|
]], float_pos={[4] = {{id = -1}, 'NW', 2, 2, 19, false, 100}}})
]], float_pos={[4] = {{id = -1}, 'NW', 2, 2, 19, false, 250}}})
meths.input_mouse('left', 'press', '', 4, 2, 2)
screen:expect({grid=[[
## grid 1
@ -3716,7 +3716,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function()
{n: foo }|
{n: bar }|
{n: baz }|
]], float_pos={[4] = {{id = -1}, 'NW', 2, 1, 3, false, 100}}})
]], float_pos={[4] = {{id = -1}, 'NW', 2, 1, 3, false, 250}}})
meths.input_mouse('right', 'drag', '', 2, 3, 6)
screen:expect({grid=[[
## grid 1
@ -3738,7 +3738,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function()
{n: foo }|
{n: bar }|
{s: baz }|
]], float_pos={[4] = {{id = -1}, 'NW', 2, 1, 3, false, 100}}})
]], float_pos={[4] = {{id = -1}, 'NW', 2, 1, 3, false, 250}}})
meths.input_mouse('right', 'release', '', 2, 1, 6)
screen:expect({grid=[[
## grid 1
@ -3780,7 +3780,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function()
{n: foo }|
{n: bar }|
{n: baz }|
]], float_pos={[4] = {{id = -1}, 'NW', 2, 1, 3, false, 100}}})
]], float_pos={[4] = {{id = -1}, 'NW', 2, 1, 3, false, 250}}})
eq(true, screen.options.mousemoveevent)
meths.input_mouse('move', '', '', 2, 3, 6)
screen:expect({grid=[[
@ -3803,7 +3803,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function()
{n: foo }|
{n: bar }|
{s: baz }|
]], float_pos={[4] = {{id = -1}, 'NW', 2, 1, 3, false, 100}}})
]], float_pos={[4] = {{id = -1}, 'NW', 2, 1, 3, false, 250}}})
eq(true, screen.options.mousemoveevent)
meths.input_mouse('left', 'press', '', 2, 2, 6)
screen:expect({grid=[[