diff src/gui.c @ 17306:16d5e91c5e5b v8.1.1652

patch 8.1.1652: GUI: popup window doesn't close on mouse movement commit https://github.com/vim/vim/commit/49fe95f22517b775506ef34681000d84bb417eb3 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Jul 8 21:57:30 2019 +0200 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.
author Bram Moolenaar <Bram@vim.org>
date Mon, 08 Jul 2019 22:00:04 +0200
parents 9ca8baed6b90
children 54fcde87a9eb
line wrap: on
line diff
--- a/src/gui.c
+++ b/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);
@@ -4894,6 +4891,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.
  */
     void