]> granicus.if.org Git - vim/commitdiff
patch 8.2.2352: if focus lost/gained is received twice code is not ignored v8.2.2352
authorBram Moolenaar <Bram@vim.org>
Thu, 14 Jan 2021 20:57:58 +0000 (21:57 +0100)
committerBram Moolenaar <Bram@vim.org>
Thu, 14 Jan 2021 20:57:58 +0000 (21:57 +0100)
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.

src/term.c
src/version.c

index d3d0581d663c01b7ffe5345ea98c713d89349129..b17bc397e3615ce397d984fd21e4f396af8f37f4 100644 (file)
@@ -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;
            }
        }
index b2de0115a2d12137fc79bb73111f91af7a59781d..acca7aab569ee236471eb13d0ddac1dbd2a22767 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2352,
 /**/
     2351,
 /**/