Focus events can cause trouble if left on and they can't be turned off

during idle periods (like the other states are) because we'd miss
events. So add a server option to control them. Defaults to off.
This commit is contained in:
Nicholas Marriott
2013-06-23 13:10:46 +00:00
parent a41cd8d75b
commit 3977dba761
5 changed files with 41 additions and 4 deletions

14
tty.c
View File

@ -219,8 +219,13 @@ tty_start_tty(struct tty *tty)
if (tty_term_has(tty->term, TTYC_KMOUS))
tty_puts(tty, "\033[?1000l\033[?1006l\033[?1005l");
if (tty_term_has(tty->term, TTYC_XT))
if (tty_term_has(tty->term, TTYC_XT)) {
if (options_get_number(&global_options, "focus-events")) {
tty->flags |= TTY_FOCUS;
tty_puts(tty, "\033[?1004h");
}
tty_puts(tty, "\033[c\033[>4;1m\033[m");
}
tty->cx = UINT_MAX;
tty->cy = UINT_MAX;
@ -282,8 +287,13 @@ tty_stop_tty(struct tty *tty)
if (tty_term_has(tty->term, TTYC_KMOUS))
tty_raw(tty, "\033[?1000l\033[?1006l\033[?1005l");
if (tty_term_has(tty->term, TTYC_XT))
if (tty_term_has(tty->term, TTYC_XT)) {
if (tty->flags & TTY_FOCUS) {
tty->flags &= ~TTY_FOCUS;
tty_puts(tty, "\033[?1004l");
}
tty_raw(tty, "\033[>4m\033[m");
}
tty_raw(tty, tty_term_string(tty->term, TTYC_RMCUP));