mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.1.1652: GUI: popup window doesn't close on mouse movement
Problem: GUI: popup window doesn't close on mouse movement. (Paul Jolly) Solution: Generate mouse-move events when a popup window is visible.
This commit is contained in:
32
src/gui.c
32
src/gui.c
@@ -4823,18 +4823,15 @@ gui_focus_change(int in_focus)
|
||||
}
|
||||
|
||||
/*
|
||||
* Called when the mouse moved (but not when dragging).
|
||||
* When mouse moved: apply 'mousefocus'.
|
||||
* Also updates the mouse pointer shape.
|
||||
*/
|
||||
void
|
||||
gui_mouse_moved(int x, int y)
|
||||
static void
|
||||
gui_mouse_focus(int x, int y)
|
||||
{
|
||||
win_T *wp;
|
||||
char_u st[8];
|
||||
|
||||
/* Ignore this while still starting up. */
|
||||
if (!gui.in_use || gui.starting)
|
||||
return;
|
||||
|
||||
#ifdef FEAT_MOUSESHAPE
|
||||
/* Get window pointer, and update mouse shape as well. */
|
||||
wp = xy2win(x, y);
|
||||
@@ -4893,6 +4890,27 @@ gui_mouse_moved(int x, int y)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Called when the mouse moved (but not when dragging).
|
||||
*/
|
||||
void
|
||||
gui_mouse_moved(int x, int y)
|
||||
{
|
||||
// Ignore this while still starting up.
|
||||
if (!gui.in_use || gui.starting)
|
||||
return;
|
||||
|
||||
// apply 'mousefocus' and pointer shape
|
||||
gui_mouse_focus(x, y);
|
||||
|
||||
#ifdef FEAT_TEXT_PROP
|
||||
if (popup_visible)
|
||||
// Generate a mouse-moved event, so that the popup can perhaps be
|
||||
// closed, just like in the terminal.
|
||||
gui_send_mouse_event(MOUSE_DRAG, x, y, FALSE, 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Called when mouse should be moved to window with focus.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user