updated for version 7.0105
diff --git a/src/gui_w16.c b/src/gui_w16.c
index 4970336..2452ce3 100644
--- a/src/gui_w16.c
+++ b/src/gui_w16.c
@@ -802,7 +802,7 @@
 }
 
     void
-gui_make_popup(char_u *path_name)
+gui_make_popup(char_u *path_name, int mouse_pos)
 {
     vimmenu_T	*menu = gui_find_menu(path_name);
 
@@ -814,10 +814,18 @@
 	temp_p = GetDCOrg(s_hdc);
 	p.x = LOWORD(temp_p);
 	p.y = HIWORD(temp_p);
-	if (curwin!=NULL)
+	if (mouse_pos)
 	{
-	    p.x+= TEXT_X(W_WINCOL(curwin) + curwin->w_wcol +1);
-	    p.y+= TEXT_Y(W_WINROW(curwin) + curwin->w_wrow +1);
+	    int	mx, my;
+
+	    gui_mch_getmouse(&mx, &my);
+	    p.x += mx;
+	    p.y += my;
+	}
+	else if (curwin != NULL)
+	{
+	    p.x += TEXT_X(W_WINCOL(curwin) + curwin->w_wcol + 1);
+	    p.y += TEXT_Y(W_WINROW(curwin) + curwin->w_wrow + 1);
 	}
 	msg_scroll = FALSE;
 	gui_mch_show_popupmenu_at(menu, (int)p.x, (int)p.y);