// Set to TRUE if there is any visible popup window.
EXTERN int popup_visible INIT(= FALSE);
+// Set to TRUE if a visible popup window may use a MOUSE_MOVE event
+EXTERN int popup_uses_mouse_move INIT(= FALSE);
+
EXTERN int text_prop_frozen INIT(= 0);
#endif
gui_mouse_focus(x, y);
#ifdef FEAT_PROP_POPUP
- if (popup_visible)
+ if (popup_uses_mouse_move)
// Generate a mouse-moved event, so that the popup can perhaps be
// closed, just like in the terminal.
gui_send_mouse_event(MOUSE_MOVE, x, y, FALSE, 0);
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".
*/
/*
* 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
vim_free(plines_cache);
}
+
+ update_popup_uses_mouse_move();
}
/*