# HG changeset patch # User Bram Moolenaar # Date 1573506003 -3600 # Node ID b10ef01555c8e135da50ab1651bf5db00ba341fa # Parent 2bffaff5d64ddc00652fabab2a19e9140486fa70 patch 8.1.2292: v:mouse_winid not set on click in popup window Commit: https://github.com/vim/vim/commit/d002e411c60a231b7c136a84422b3d9bf7b8b4df Author: Bram Moolenaar Date: Mon Nov 11 21:45:05 2019 +0100 patch 8.1.2292: v:mouse_winid not set on click in popup window Problem: v:mouse_winid not set on click in popup window. Solution: Set v:mouse_winid. (closes https://github.com/vim/vim/issues/5171) diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt --- 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 . 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 --- 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 --- 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("\", '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("\", 'xt') @@ -2236,6 +2238,7 @@ func Test_popupwin_filter_mouse() call feedkeys("\", '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 --- 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,