From: Bram Moolenaar Date: Mon, 20 Nov 2017 20:49:19 +0000 (+0100) Subject: patch 8.0.1323: mouse events in a terminal window may cause endless loop X-Git-Tag: v8.0.1323 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=73675fbc4810470f8935f05a3c16c14e0d5e737f;p=vim 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(). --- diff --git a/src/normal.c b/src/normal.c index b385c0d4d..fb0129aec 100644 --- 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)) diff --git a/src/terminal.c b/src/terminal.c index f1b4313ad..a4caa42ed 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -1302,9 +1302,9 @@ send_keys_to_term(term_T *term, int c, int typed) 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 */ diff --git a/src/version.c b/src/version.c index de5175fd3..bbb576594 100644 --- a/src/version.c +++ b/src/version.c @@ -771,6 +771,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1323, /**/ 1322, /**/