Mercurial > vim
diff src/popupwin.c @ 28187:d27a9eed9849 v8.2.4619
patch 8.2.4619: mapping is cancelled when mouse moves and popup is visible
Commit: https://github.com/vim/vim/commit/f8e43f6107f3a83b8c74a84c4c8f99598e2dc4c0
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Mar 24 15:15:15 2022 +0000
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 24 Mar 2022 16:30:03 +0100 |
parents | d3adf7b141a9 |
children | 8ef5c996df31 |
line wrap: on
line diff
--- a/src/popupwin.c +++ b/src/popupwin.c @@ -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(); } /*