changeset 23620:24beca855c59 v8.2.2352

patch 8.2.2352: if focus lost/gained is received twice code is not ignored Commit: https://github.com/vim/vim/commit/d44cc593cee84fc3c712ca1828d1574f80700383 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jan 14 21:57:58 2021 +0100 patch 8.2.2352: if focus lost/gained is received twice code is not ignored Problem: If the focus lost/gained escape sequence is received twice it is not ignored. (Christ van Willigen) Solution: Adjust the logic to ignore the escape code.
author Bram Moolenaar <Bram@vim.org>
date Thu, 14 Jan 2021 22:00:05 +0100
parents 2d5c14704a42
children 55e1b24dac4c
files src/term.c src/version.c
diffstat 2 files changed, 16 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/term.c
+++ b/src/term.c
@@ -5708,18 +5708,24 @@ check_termcode(
 		&& key_name[0] == KS_EXTRA
 	    )
 	{
-	    if (key_name[1] == KE_FOCUSGAINED && !focus_state)
+	    if (key_name[1] == KE_FOCUSGAINED)
 	    {
-		ui_focus_change(TRUE);
-		did_cursorhold = TRUE;
-		focus_state = TRUE;
+		if (!focus_state)
+		{
+		    ui_focus_change(TRUE);
+		    did_cursorhold = TRUE;
+		    focus_state = TRUE;
+		}
 		key_name[1] = (int)KE_IGNORE;
 	    }
-	    else if (key_name[1] == KE_FOCUSLOST && focus_state)
+	    else if (key_name[1] == KE_FOCUSLOST)
 	    {
-		ui_focus_change(FALSE);
-		did_cursorhold = TRUE;
-		focus_state = FALSE;
+		if (focus_state)
+		{
+		    ui_focus_change(FALSE);
+		    did_cursorhold = TRUE;
+		    focus_state = FALSE;
+		}
 		key_name[1] = (int)KE_IGNORE;
 	    }
 	}
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2352,
+/**/
     2351,
 /**/
     2350,