diff options
author | Bram Moolenaar <Bram@vim.org> | 2017-11-20 21:49:19 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2017-11-20 21:49:19 +0100 |
commit | 73675fbc4810470f8935f05a3c16c14e0d5e737f (patch) | |
tree | 54ed1d0e261cac4dc8d916a903cece9690a70871 | |
parent | 5bbef3194984f175eb12b6efaa04c49a42ab58f2 (diff) |
patch 8.0.1323: mouse events in a terminal window may cause endless loopv8.0.1323
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().
-rw-r--r-- | src/normal.c | 4 | ||||
-rw-r--r-- | src/terminal.c | 4 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/normal.c b/src/normal.c index b385c0d4d6..fb0129aec7 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 f1b4313ad8..a4caa42eda 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 de5175fd38..bbb5765949 100644 --- 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, |