diff src/gui_w32.c @ 18520:6067fbb46625 v8.1.2254

patch 8.1.2254: MS-Windows: mouse scroll wheel doesn't work in popup Commit: https://github.com/vim/vim/commit/0630bb6580237fe01db22a84885c10f12580f7af Author: Bram Moolenaar <Bram@vim.org> Date: Mon Nov 4 22:52:12 2019 +0100 patch 8.1.2254: MS-Windows: mouse scroll wheel doesn't work in popup Problem: MS-Windows: mouse scroll wheel doesn't work in popup. Solution: Handle mouse wheel events separately. (closes https://github.com/vim/vim/issues/5138)
author Bram Moolenaar <Bram@vim.org>
date Mon, 04 Nov 2019 23:00:04 +0100
parents 59b3d19511d0
children 334b1f897f3a
line wrap: on
line diff
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -4262,6 +4262,32 @@ init_mouse_wheel(void)
     if (mouse_scroll_lines == 0)
 	init_mouse_wheel();
 
+#ifdef FEAT_TEXT_PROP
+    {
+	win_T *wp = gui_mouse_window(FIND_POPUP);
+
+	if (wp != NULL && popup_is_popup(wp))
+	{
+	    cmdarg_T cap;
+	    oparg_T	oa;
+
+	    // Mouse hovers over popup window, scroll it if possible.
+	    mouse_row = wp->w_winrow;
+	    mouse_col = wp->w_wincol;
+	    vim_memset(&cap, 0, sizeof(cap));
+	    cap.arg = zDelta < 0 ? MSCR_UP : MSCR_DOWN;
+	    cap.cmdchar = zDelta < 0 ? K_MOUSEUP : K_MOUSEDOWN;
+	    clear_oparg(&oa);
+	    cap.oap = &oa;
+	    nv_mousescroll(&cap);
+	    update_screen(0);
+	    setcursor();
+	    out_flush();
+	    return;
+	}
+    }
+#endif
+
     mch_disable_flush();
     if (mouse_scroll_lines > 0
 	    && mouse_scroll_lines < (size > 2 ? size - 2 : 1))