From d24f335465853dbcfec0c4b6ff5fb02b107cf5e8 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Thu, 29 Jan 2026 14:43:59 +0100 Subject: [PATCH] fix: reset cursor color and state before every frame closes #20 --- src/tui/tui.zig | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/tui/tui.zig b/src/tui/tui.zig index fa79a67..7c816e3 100644 --- a/src/tui/tui.zig +++ b/src/tui/tui.zig @@ -637,7 +637,13 @@ fn render(self: *Self) void { const frame = tracy.initZone(@src(), .{ .name = "tui render" }); defer frame.deinit(); self.rdr_.stdplane().erase(); - const continue_mainview = if (self.mainview_) |mv| mv.render(self.current_theme()) else false; + const theme_ = self.current_theme(); + if (self.config_.enable_terminal_cursor) { + self.rdr_.cursor_disable(); + if (self.rdr_.vx.caps.multi_cursor) self.rdr_.clear_all_multi_cursors() catch {}; + self.rdr_.set_terminal_cursor_color(theme_.editor_cursor.bg.?); + } + const continue_mainview = if (self.mainview_) |mv| mv.render(theme_) else false; switch (self.hint_mode) { .prefix => if (self.config_.enable_prefix_keyhints) @@ -1403,7 +1409,6 @@ const cmds = struct { pub const change_fontface_meta: Meta = .{ .description = "Change font" }; pub fn exit_overlay_mode(self: *Self, _: Ctx) Result { - self.rdr_.cursor_disable(); if (self.input_mode_outer_ == null) return enter_mode_default(self, .{}); if (self.input_mode_) |*mode| mode.deinit(); self.input_mode_ = self.input_mode_outer_; @@ -1514,7 +1519,6 @@ const cmds = struct { } pub fn exit_mini_mode(self: *Self, _: Ctx) Result { - self.rdr_.cursor_disable(); if (self.mini_mode_) |_| {} else return; if (self.input_mode_) |*mode| mode.deinit(); self.input_mode_ = self.input_mode_outer_;