From ae97b94176062d30ea8c68bb83cde034c5150c78 Mon Sep 17 00:00:00 2001
From: Bram Moolenaar <Bram@vim.org>
Date: Thu, 9 Jul 2020 19:16:35 +0200
Subject: [PATCH] patch 8.2.1166: once mouse move events are enabled getchar()
 returns them

Problem:    Once mouse move events are enabled getchar() returns them.
Solution:   Ignore K_MOUSEMOVE in getchar(). (closes #6424)
---
 runtime/doc/eval.txt | 5 +++--
 src/getchar.c        | 4 ++--
 src/version.c        | 2 ++
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 10b57b7b87..08399b8e0c 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -5023,8 +5023,9 @@ getchar([expr])						*getchar()*
 		When the user clicks a mouse button, the mouse event will be
 		returned.  The position can then be found in |v:mouse_col|,
 		|v:mouse_lnum|, |v:mouse_winid| and |v:mouse_win|.
-		|getmousepos()| can also be used.  This example positions the
-		mouse as it would normally happen: >
+		|getmousepos()| can also be used.  Mouse move events will be
+		ignored.
+		This example positions the mouse as it would normally happen: >
 			let c = getchar()
 			if c == "\<LeftMouse>" && v:mouse_win > 0
 			  exe v:mouse_win . "wincmd w"
diff --git a/src/getchar.c b/src/getchar.c
index 2beffa5784..e040748d66 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1501,7 +1501,7 @@ openscript(
 	{
 	    update_topline_cursor();	// update cursor position and topline
 	    normal_cmd(&oa, FALSE);	// execute one command
-	    vpeekc();			// check for end of file
+	    (void)vpeekc();		// check for end of file
 	}
 	while (scriptin[oldcurscript] != NULL);
 
@@ -2045,7 +2045,7 @@ f_getchar(typval_T *argvars, typval_T *rettv)
 	    // getchar(0) and char avail: return char
 	    n = plain_vgetc();
 
-	if (n == K_IGNORE)
+	if (n == K_IGNORE || n == K_MOUSEMOVE)
 	    continue;
 	break;
     }
diff --git a/src/version.c b/src/version.c
index 06f3f27caa..9fcf578ffc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1166,
 /**/
     1165,
 /**/
-- 
GitLab