Mercurial > vim
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; } }