diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-03-02 17:16:39 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-03-02 17:16:39 +0000 |
commit | 8d5daf267eb84d2346785741b22d18907b047e0a (patch) | |
tree | e3f63ad2860eec62a5963ed753b4caebbdd266cc | |
parent | c6e9d7063d275139d3c207435d293271c8b556ab (diff) |
patch 8.2.4490: terminal focus reporting only works for xterm-like terminalsv8.2.4490
Problem: Terminal focus reporting only works for xterm-like terminals.
(Jonathan Rascher)
Solution: Remove the "focus_mode" flag. (closes #9859)
-rw-r--r-- | src/term.c | 18 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 11 insertions, 9 deletions
diff --git a/src/term.c b/src/term.c index 824f912f67..f131ebff88 100644 --- a/src/term.c +++ b/src/term.c @@ -197,8 +197,7 @@ static char_u *vim_tgetstr(char *s, char_u **pp); static int detected_8bit = FALSE; // detected 8-bit terminal #if (defined(UNIX) || defined(VMS)) -static int focus_mode = FALSE; // xterm's "focus reporting" availability -static int focus_state = FALSE; // TRUE if the terminal window gains focus +static int focus_state = MAYBE; // TRUE if the Vim window has focus #endif #ifdef FEAT_TERMRESPONSE @@ -2047,7 +2046,7 @@ set_termname(char_u *term) #endif #ifdef FEAT_MOUSE_XTERM - // focus reporting is supported by xterm compatible terminals and tmux. + // Focus reporting is supported by xterm compatible terminals and tmux. if (use_xterm_like_mouse(term)) { char_u name[3]; @@ -2062,11 +2061,13 @@ set_termname(char_u *term) name[1] = KE_FOCUSLOST; add_termcode(name, (char_u *)"\033[O", FALSE); - focus_mode = TRUE; - focus_state = TRUE; need_gather = TRUE; } #endif +#if (defined(UNIX) || defined(VMS)) + // First time after setting 'term' a focus event is always reported. + focus_state = MAYBE; +#endif #ifdef USE_TERM_CONSOLE // DEFAULT_TERM indicates that it is the machine console. @@ -3633,7 +3634,7 @@ starttermcap(void) #if defined(UNIX) || defined(VMS) // Enable xterm's focus reporting mode when 'esckeys' is set. - if (focus_mode && p_ek && *T_FE != NUL) + if (p_ek && *T_FE != NUL) out_str(T_FE); #endif @@ -3691,7 +3692,7 @@ stoptermcap(void) #if defined(UNIX) || defined(VMS) // Disable xterm's focus reporting mode if 'esckeys' is set. - if (focus_mode && p_ek && *T_FD != NUL) + if (p_ek && *T_FD != NUL) out_str(T_FD); #endif @@ -5812,11 +5813,10 @@ check_termcode( * Handle FocusIn/FocusOut event sequences reported by XTerm. * (CSI I/CSI O) */ - if (focus_mode + if (key_name[0] == KS_EXTRA # ifdef FEAT_GUI && !gui.in_use # endif - && key_name[0] == KS_EXTRA ) { if (key_name[1] == KE_FOCUSGAINED) diff --git a/src/version.c b/src/version.c index b212379ce9..b73b2600ab 100644 --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4490, +/**/ 4489, /**/ 4488, |