diff options
author | Bram Moolenaar <Bram@vim.org> | 2021-01-14 21:57:58 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-01-14 21:57:58 +0100 |
commit | d44cc593cee84fc3c712ca1828d1574f80700383 (patch) | |
tree | 02a507f680943ca085211fd252b25b2363dc9292 | |
parent | 8f81b22e8691f6e7c76153e945bbef15a8190cd9 (diff) | |
download | vim-git-d44cc593cee84fc3c712ca1828d1574f80700383.tar.gz |
patch 8.2.2352: if focus lost/gained is received twice code is not ignoredv8.2.2352
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.
-rw-r--r-- | src/term.c | 22 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 16 insertions, 8 deletions
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 @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2352, +/**/ 2351, /**/ 2350, |