Mercurial > vim
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 */