summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-11-11 21:45:05 +0100
committerBram Moolenaar <Bram@vim.org>2019-11-11 21:45:05 +0100
commitd002e411c60a231b7c136a84422b3d9bf7b8b4df (patch)
treeb5213a74e07f8b0d2ea32617f7870fa769c243f3
parentadf4aa200b026dce91dd169143ee8b93e848ec8b (diff)
patch 8.1.2292: v:mouse_winid not set on click in popup windowv8.1.2292
Problem: v:mouse_winid not set on click in popup window. Solution: Set v:mouse_winid. (closes #5171)
-rw-r--r--runtime/doc/popup.txt5
-rw-r--r--src/popupwin.c1
-rw-r--r--src/testdir/test_popupwin.vim3
-rw-r--r--src/version.c2
4 files changed, 9 insertions, 2 deletions
diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index 0dd8d1ac04..a74c2adea6 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -863,8 +863,9 @@ Some recommended key actions:
Tab accept current suggestion
A mouse click arrives as <LeftMouse>. The coordinates are in |v:mouse_col|
-and |v:mouse_lnum|. The top-left screen cell of the popup is col 1, row 1
-(not counting the border).
+and |v:mouse_lnum|. |v:mouse_winid| holds the window ID, |v:mouse_win| is
+always zero. The top-left screen cell of the popup is col 1, row 1 (not
+counting the border).
Vim provides standard filters |popup_filter_menu()| and
|popup_filter_yesno()|.
diff --git a/src/popupwin.c b/src/popupwin.c
index 405e6081ac..66ce30c465 100644
--- a/src/popupwin.c
+++ b/src/popupwin.c
@@ -2915,6 +2915,7 @@ invoke_popup_filter(win_T *wp, int c)
(void)mouse_comp_pos(wp, &row, &col, &lnum, NULL);
set_vim_var_nr(VV_MOUSE_LNUM, lnum);
set_vim_var_nr(VV_MOUSE_COL, col + 1);
+ set_vim_var_nr(VV_MOUSE_WINID, wp->w_id);
}
}
diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim
index ad3caa020c..7e9404162f 100644
--- a/src/testdir/test_popupwin.vim
+++ b/src/testdir/test_popupwin.vim
@@ -2207,6 +2207,7 @@ func Test_popupwin_filter_mouse()
func MyPopupFilter(winid, c)
let g:got_mouse_col = v:mouse_col
let g:got_mouse_lnum = v:mouse_lnum
+ let g:got_mouse_winid = v:mouse_winid
return 0
endfunc
@@ -2221,6 +2222,7 @@ func Test_popupwin_filter_mouse()
call feedkeys("\<LeftMouse>", 'xt')
call assert_equal(1, g:got_mouse_col)
call assert_equal(1, g:got_mouse_lnum)
+ call assert_equal(winid, g:got_mouse_winid)
call test_setmouse(5, 8)
call feedkeys("\<LeftMouse>", 'xt')
@@ -2236,6 +2238,7 @@ func Test_popupwin_filter_mouse()
call feedkeys("\<LeftMouse>", 'xt')
call assert_equal(13, g:got_mouse_col)
call assert_equal(3, g:got_mouse_lnum)
+ call assert_equal(winid, g:got_mouse_winid)
call popup_close(winid)
delfunc MyPopupFilter
diff --git a/src/version.c b/src/version.c
index f2b1a758a7..0e9b27be5d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2292,
+/**/
2291,
/**/
2290,