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
index b385c0d..fb0129a 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -4633,7 +4633,9 @@
{
# 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 f1b4313..a4caa42 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -1302,9 +1302,9 @@
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 de5175f..bbb5765 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1323,
+/**/
1322,
/**/
1321,