X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/51df0ab5a97b5b4bd8b742375fff3cd382396e6c..1cff13202c4c2cabbf77eac5656b327055ab11e7:/terminal.c diff --git a/terminal.c b/terminal.c index f070579b..9003cc49 100644 --- a/terminal.c +++ b/terminal.c @@ -1043,10 +1043,9 @@ static void seen_disp_event(Terminal *term) */ static void term_schedule_tblink(Terminal *term) { - if (term->tblink_pending) - return; /* already well in hand */ if (term->blink_is_real) { - term->next_tblink = schedule_timer(TBLINK_DELAY, term_timer, term); + if (!term->tblink_pending) + term->next_tblink = schedule_timer(TBLINK_DELAY, term_timer, term); term->tblink_pending = TRUE; } else { term->tblinker = 1; /* reset when not in use */ @@ -1059,10 +1058,9 @@ static void term_schedule_tblink(Terminal *term) */ static void term_schedule_cblink(Terminal *term) { - if (term->cblink_pending) - return; /* already well in hand */ - if (term->cfg.blink_cur) { - term->next_cblink = schedule_timer(CBLINK_DELAY, term_timer, term); + if (term->cfg.blink_cur && term->has_focus) { + if (!term->cblink_pending) + term->next_cblink = schedule_timer(CBLINK_DELAY, term_timer, term); term->cblink_pending = TRUE; } else { term->cblinker = 1; /* reset when not in use */ @@ -6074,3 +6072,9 @@ void term_provide_logctx(Terminal *term, void *logctx) { term->logctx = logctx; } + +void term_set_focus(Terminal *term, int has_focus) +{ + term->has_focus = has_focus; + term_schedule_cblink(term); +}