forked from aniani/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().
This commit is contained in:
@@ -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))
|
||||
|
@@ -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 */
|
||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1323,
|
||||
/**/
|
||||
1322,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user