# HG changeset patch # User Christian Brabandt # Date 1511211606 -3600 # Node ID 40ae30bc2691704fecd7a1fdb62897b9430229bf # Parent 8702493d83af832fa3115e13caa5371ec16a3950 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 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(). diff --git a/src/normal.c b/src/normal.c --- 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 --- 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 */ diff --git a/src/version.c b/src/version.c --- 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,