From: Bram Moolenaar Date: Thu, 14 Jan 2021 20:57:58 +0000 (+0100) Subject: patch 8.2.2352: if focus lost/gained is received twice code is not ignored X-Git-Tag: v8.2.2352 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d44cc593cee84fc3c712ca1828d1574f80700383;p=vim 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. --- diff --git a/src/term.c b/src/term.c index d3d0581d6..b17bc397e 100644 --- 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; } } diff --git a/src/version.c b/src/version.c index b2de0115a..acca7aab5 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2352, /**/ 2351, /**/