forked from aniani/vim
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Problem: Mapping is cancelled when mouse moves and popup is visible. Solution: Only generate mouse moved events when a popup may use them. (closes #10004)
This commit is contained in:
@@ -150,6 +150,29 @@ set_mousemoved_values(win_T *wp)
|
||||
wp->w_popup_mouse_maxcol = mouse_col;
|
||||
}
|
||||
|
||||
static void
|
||||
update_popup_uses_mouse_move(void)
|
||||
{
|
||||
popup_uses_mouse_move = FALSE;
|
||||
if (popup_visible)
|
||||
{
|
||||
win_T *wp;
|
||||
|
||||
FOR_ALL_POPUPWINS(wp)
|
||||
if (wp->w_popup_mouse_row != 0)
|
||||
{
|
||||
popup_uses_mouse_move = TRUE;
|
||||
return;
|
||||
}
|
||||
FOR_ALL_POPUPWINS_IN_TAB(curtab, wp)
|
||||
if (wp->w_popup_mouse_row != 0)
|
||||
{
|
||||
popup_uses_mouse_move = TRUE;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Used when popup options contain "moved" with "word" or "WORD".
|
||||
*/
|
||||
@@ -3586,7 +3609,7 @@ popup_need_position_adjust(win_T *wp)
|
||||
/*
|
||||
* Update "popup_mask" if needed.
|
||||
* Also recomputes the popup size and positions.
|
||||
* Also updates "popup_visible".
|
||||
* Also updates "popup_visible" and "popup_uses_mouse_move".
|
||||
* Also marks window lines for redrawing.
|
||||
*/
|
||||
void
|
||||
@@ -3755,6 +3778,8 @@ may_update_popup_mask(int type)
|
||||
|
||||
vim_free(plines_cache);
|
||||
}
|
||||
|
||||
update_popup_uses_mouse_move();
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user