From b4402a6aa5228d8428ab7129bdfc07f94ed5bc03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 17 Aug 2021 18:31:42 +0200 Subject: [PATCH] term: check visual-focus, not kbd-focus when enabling/disabling cursor blink term_cursor_blink_update() is called when the visual focus changes state (i.e. when our top-level surface is activated de-activated). Checking keyboard focus worked on Sway, but on e.g. GNOME, the order in which keyboard focus and visual focus are updated is different, and we ended up either making the cursor invisible, or visible, but not blinking, when changing focus back to the window. Closes #686 --- CHANGELOG.md | 3 +++ terminal.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e78f7aa..da164b8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,6 +93,9 @@ freeze when closing a footclient window. * Underlying cell content showing through in the left-most column of sixels. +* Blinking cursor stops blinking, or becoming invisible, when + switching focus from, and then back to a terminal window on GNOME + (https://codeberg.org/dnkl/foot/issues/686). ### Security diff --git a/terminal.c b/terminal.c index 2be92dda..cb1641f2 100644 --- a/terminal.c +++ b/terminal.c @@ -2456,11 +2456,11 @@ void term_cursor_blink_update(struct terminal *term) { bool enable = term->cursor_blink.decset || term->cursor_blink.deccsusr; - bool activate = !term->shutdown.in_progress && enable && term->kbd_focus; + bool activate = !term->shutdown.in_progress && enable && term->visual_focus; LOG_DBG("decset=%d, deccsrusr=%d, focus=%d, shutting-down=%d, enable=%d, activate=%d", term->cursor_blink.decset, term->cursor_blink.deccsusr, - term->kbd_focus, term->shutdown.in_progress, + term->visual_focus, term->shutdown.in_progress, enable, activate); if (activate && term->cursor_blink.fd < 0) {