summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2021-01-14 21:57:58 +0100
committerBram Moolenaar <Bram@vim.org>2021-01-14 21:57:58 +0100
commitd44cc593cee84fc3c712ca1828d1574f80700383 (patch)
tree02a507f680943ca085211fd252b25b2363dc9292
parent8f81b22e8691f6e7c76153e945bbef15a8190cd9 (diff)
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.c22
-rw-r--r--src/version.c2
2 files changed, 16 insertions, 8 deletions
diff --git a/src/term.c b/src/term.c
index d3d0581d66..b17bc397e3 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 b2de0115a2..acca7aab56 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,