mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	fix(pum): show right-click menu above cmdline area (#23298)
This commit is contained in:
		| @@ -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. |     // room the window size will keep changing. | ||||||
|   } while (pum_set_selected(selected, redo_count) && (++redo_count <= 2)); |   } while (pum_set_selected(selected, redo_count) && (++redo_count <= 2)); | ||||||
|  |  | ||||||
|  |   pum_grid.zindex = (State == MODE_CMDLINE) ? kZIndexCmdlinePopupMenu : kZIndexPopupMenu; | ||||||
|   pum_redraw(); |   pum_redraw(); | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -443,9 +444,6 @@ void pum_redraw(void) | |||||||
|  |  | ||||||
|   grid_assign_handle(&pum_grid); |   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, |   bool moved = ui_comp_put_grid(&pum_grid, pum_row, pum_col - col_off, | ||||||
|                                 pum_height, grid_width, false, true); |                                 pum_height, grid_width, false, true); | ||||||
|   bool invalid_grid = moved || pum_invalid; |   bool invalid_grid = moved || pum_invalid; | ||||||
| @@ -1088,6 +1086,7 @@ void pum_show_popupmenu(vimmenu_T *menu) | |||||||
|   for (;;) { |   for (;;) { | ||||||
|     pum_is_visible = true; |     pum_is_visible = true; | ||||||
|     pum_is_drawn = true; |     pum_is_drawn = true; | ||||||
|  |     pum_grid.zindex = kZIndexCmdlinePopupMenu;  // show above cmdline area #23275 | ||||||
|     pum_redraw(); |     pum_redraw(); | ||||||
|     setcursor_mayforce(true); |     setcursor_mayforce(true); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3259,16 +3259,16 @@ describe('builtin popupmenu', function() | |||||||
|       :let g:menustr = 'bar'          | |       :let g:menustr = 'bar'          | | ||||||
|     ]]) |     ]]) | ||||||
|     eq('bar', meths.get_var('menustr')) |     eq('bar', meths.get_var('menustr')) | ||||||
|     feed('<RightMouse><20,1>') |     feed('<RightMouse><20,2>') | ||||||
|     screen:expect([[ |     screen:expect([[ | ||||||
|       ^popup menu test                 | |       ^popup menu test                 | | ||||||
|       {1:~                               }| |       {1:~                               }| | ||||||
|  |       {1:~                               }| | ||||||
|       {1:~                  }{n: foo }{1:        }| |       {1:~                  }{n: foo }{1:        }| | ||||||
|       {1:~                  }{n: bar }{1:        }| |       {1:~                  }{n: bar }{1:        }| | ||||||
|       {1:~                  }{n: baz }{1:        }| |       :let g:menustr = 'b{n: baz }        | | ||||||
|       :let g:menustr = 'bar'          | |  | ||||||
|     ]]) |     ]]) | ||||||
|     feed('<LeftMouse><22,4>') |     feed('<LeftMouse><22,5>') | ||||||
|     screen:expect([[ |     screen:expect([[ | ||||||
|       ^popup menu test                 | |       ^popup menu test                 | | ||||||
|       {1:~                               }| |       {1:~                               }| | ||||||
| @@ -3675,7 +3675,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function() | |||||||
|       {n: foo }| |       {n: foo }| | ||||||
|       {n: bar }| |       {n: bar }| | ||||||
|       {n: baz }| |       {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) |     meths.input_mouse('left', 'press', '', 4, 2, 2) | ||||||
|     screen:expect({grid=[[ |     screen:expect({grid=[[ | ||||||
|     ## grid 1 |     ## grid 1 | ||||||
| @@ -3716,7 +3716,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function() | |||||||
|       {n: foo }| |       {n: foo }| | ||||||
|       {n: bar }| |       {n: bar }| | ||||||
|       {n: baz }| |       {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) |     meths.input_mouse('right', 'drag', '', 2, 3, 6) | ||||||
|     screen:expect({grid=[[ |     screen:expect({grid=[[ | ||||||
|     ## grid 1 |     ## grid 1 | ||||||
| @@ -3738,7 +3738,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function() | |||||||
|       {n: foo }| |       {n: foo }| | ||||||
|       {n: bar }| |       {n: bar }| | ||||||
|       {s: baz }| |       {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) |     meths.input_mouse('right', 'release', '', 2, 1, 6) | ||||||
|     screen:expect({grid=[[ |     screen:expect({grid=[[ | ||||||
|     ## grid 1 |     ## grid 1 | ||||||
| @@ -3780,7 +3780,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function() | |||||||
|       {n: foo }| |       {n: foo }| | ||||||
|       {n: bar }| |       {n: bar }| | ||||||
|       {n: baz }| |       {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) |     eq(true, screen.options.mousemoveevent) | ||||||
|     meths.input_mouse('move', '', '', 2, 3, 6) |     meths.input_mouse('move', '', '', 2, 3, 6) | ||||||
|     screen:expect({grid=[[ |     screen:expect({grid=[[ | ||||||
| @@ -3803,7 +3803,7 @@ describe('builtin popupmenu with ui/ext_multigrid', function() | |||||||
|       {n: foo }| |       {n: foo }| | ||||||
|       {n: bar }| |       {n: bar }| | ||||||
|       {s: baz }| |       {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) |     eq(true, screen.options.mousemoveevent) | ||||||
|     meths.input_mouse('left', 'press', '', 2, 2, 6) |     meths.input_mouse('left', 'press', '', 2, 2, 6) | ||||||
|     screen:expect({grid=[[ |     screen:expect({grid=[[ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 zeertzjq
					zeertzjq