1
0
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:
Bram Moolenaar
2022-03-24 15:15:15 +00:00
parent f4f0525c34
commit f8e43f6107
4 changed files with 32 additions and 2 deletions

View File

@@ -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();
}
/*