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
|
# ifdef FEAT_TERMINAL
|
||||||
if (term_use_loop())
|
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
|
else
|
||||||
# endif
|
# endif
|
||||||
if (mod_mask & (MOD_MASK_SHIFT | MOD_MASK_CTRL))
|
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_MOUSELEFT:
|
||||||
case K_MOUSERIGHT:
|
case K_MOUSERIGHT:
|
||||||
if (mouse_row < W_WINROW(curwin)
|
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 < curwin->w_wincol
|
||||||
|| mouse_col >= W_ENDCOL(curwin)
|
|| mouse_col > W_ENDCOL(curwin)
|
||||||
|| dragging_outside)
|
|| dragging_outside)
|
||||||
{
|
{
|
||||||
/* click or scroll outside the current window */
|
/* click or scroll outside the current window */
|
||||||
|
@@ -771,6 +771,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1323,
|
||||||
/**/
|
/**/
|
||||||
1322,
|
1322,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user