summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/popupmenu.c8
-rw-r--r--src/testdir/dumps/Test_popupmenu_cmdline_1.dump4
-rw-r--r--src/testdir/test_menu.vim21
-rw-r--r--src/version.c2
4 files changed, 35 insertions, 0 deletions
diff --git a/src/popupmenu.c b/src/popupmenu.c
index d713ed428..36d3b9944 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -18,6 +18,7 @@ static int pum_selected; // index of selected item or -1
static int pum_first = 0; // index of top item
static int call_update_screen = FALSE;
+static int pum_in_cmdline = FALSE;
static int pum_height; // nr of displayed pum items
static int pum_width; // width of displayed pum items
@@ -1067,6 +1068,11 @@ pum_undisplay(void)
pum_array = NULL;
redraw_all_later(UPD_NOT_VALID);
redraw_tabline = TRUE;
+ if (pum_in_cmdline)
+ {
+ clear_cmdline = TRUE;
+ pum_in_cmdline = FALSE;
+ }
status_redraw_all();
#if defined(FEAT_PROP_POPUP) && defined(FEAT_QUICKFIX)
// hide any popup info window
@@ -1193,6 +1199,8 @@ pum_position_at_mouse(int min_width)
pum_row = mouse_row + 1;
if (pum_height > Rows - pum_row)
pum_height = Rows - pum_row;
+ if (pum_row + pum_height > cmdline_row)
+ pum_in_cmdline = TRUE;
}
else
{
diff --git a/src/testdir/dumps/Test_popupmenu_cmdline_1.dump b/src/testdir/dumps/Test_popupmenu_cmdline_1.dump
new file mode 100644
index 000000000..2ffcc469e
--- /dev/null
+++ b/src/testdir/dumps/Test_popupmenu_cmdline_1.dump
@@ -0,0 +1,4 @@
+>a+0&#ffffff0|b|c|d|e| @69
+|a|b|c|d|e| @69
+|a|b|c|d|e| @69
+@57|1|,|1| @10|T|o|p|
diff --git a/src/testdir/test_menu.vim b/src/testdir/test_menu.vim
index 9929dd5e7..22292289e 100644
--- a/src/testdir/test_menu.vim
+++ b/src/testdir/test_menu.vim
@@ -594,4 +594,25 @@ func Test_unmenu_while_listing_menus()
call StopVimInTerminal(buf)
endfunc
+" Test for opening a menu drawn in the cmdline area
+func Test_popupmenu_cmdline()
+ CheckRunVimInTerminal
+
+ let lines =<< trim END
+ set mousemodel=popup
+ menu PopUp.Test1 :<CR>
+ menu PopUp.Test2 :<CR>
+ menu PopUp.Test3 :<CR>
+ call setline(1, repeat(['abcde'], 5))
+ END
+ call writefile(lines, 'Xpopupcmdline', 'D')
+ let buf = RunVimInTerminal('-S Xpopupcmdline', {'rows': 4})
+
+ " cmdline area should be cleared when popupmenu that covered it is closed
+ call term_sendkeys(buf, "\<RightMouse>\<RightRelease>\<Esc>")
+ call VerifyScreenDump(buf, 'Test_popupmenu_cmdline_1', {})
+
+ call StopVimInTerminal(buf)
+endfunc
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index b8cc4d99b..c17109c44 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1480,
+/**/
1479,
/**/
1478,