0
0
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:
Bram Moolenaar
2019-07-08 21:57:30 +02:00
parent 9992244226
commit 49fe95f225
3 changed files with 32 additions and 14 deletions

View File

@@ -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.
*/