changeset 12893:40ae30bc2691 v8.0.1323

patch 8.0.1323: mouse events in a terminal window may cause endless loop commit https://github.com/vim/vim/commit/73675fbc4810470f8935f05a3c16c14e0d5e737f Author: Bram Moolenaar <Bram@vim.org> Date: Mon Nov 20 21:49:19 2017 +0100 patch 8.0.1323: mouse events in a terminal window may cause endless loop Problem: Mouse events in a terminal window may cause endless loop. Solution: Adjust position computation. Don't stuff a mouse event when coming from normal_cmd().
author Christian Brabandt <cb@256bit.org>
date Mon, 20 Nov 2017 22:00:06 +0100
parents 8702493d83af
children 8b3dc59c992f
files src/normal.c src/terminal.c src/version.c
diffstat 3 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/normal.c
+++ b/src/normal.c
@@ -4633,7 +4633,9 @@ nv_mousescroll(cmdarg_T *cap)
     {
 # ifdef FEAT_TERMINAL
 	if (term_use_loop())
-	    send_keys_to_term(curbuf->b_term, cap->cmdchar, TRUE);
+	    /* This window is a terminal window, send the mouse event there.
+	     * Set "typed" to FALSE to avoid an endless loop. */
+	    send_keys_to_term(curbuf->b_term, cap->cmdchar, FALSE);
 	else
 # endif
 	if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -1302,9 +1302,9 @@ send_keys_to_term(term_T *term, int c, i
 	case K_MOUSELEFT:
 	case K_MOUSERIGHT:
 	    if (mouse_row < W_WINROW(curwin)
-		    || mouse_row >= (W_WINROW(curwin) + curwin->w_height)
+		    || mouse_row > (W_WINROW(curwin) + curwin->w_height)
 		    || mouse_col < curwin->w_wincol
-		    || mouse_col >= W_ENDCOL(curwin)
+		    || mouse_col > W_ENDCOL(curwin)
 		    || dragging_outside)
 	    {
 		/* click or scroll outside the current window */
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1323,
+/**/
     1322,
 /**/
     1321,