changeset 18597:b10ef01555c8 v8.1.2292

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 <Bram@vim.org> 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)
author Bram Moolenaar <Bram@vim.org>
date Mon, 11 Nov 2019 22:00:03 +0100
parents 2bffaff5d64d
children 8ad5734bb66b
files runtime/doc/popup.txt src/popupwin.c src/testdir/test_popupwin.vim src/version.c
diffstat 4 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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()|.
--- 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);
 	}
     }
 
--- 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
--- 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,