diff --git a/src/renderer/vaxis/renderer.zig b/src/renderer/vaxis/renderer.zig index 6b446df..6ceda2c 100644 --- a/src/renderer/vaxis/renderer.zig +++ b/src/renderer/vaxis/renderer.zig @@ -562,8 +562,8 @@ pub fn request_mouse_cursor_default(self: *Self, push_or_pop: bool) void { } pub fn cursor_enable(self: *Self, y_: c_int, x_: c_int, shape: CursorShape) !void { - const y: u16 = if (y_ < 0) self.vx.screen.height + 1 else @intCast(y_); - const x: u16 = if (x_ < 0) self.vx.screen.width + 1 else @intCast(x_); + const y: u16 = if (y_ < 0) 9999 else @intCast(y_); + const x: u16 = if (x_ < 0) 9999 else @intCast(x_); self.vx.screen.cursor_vis = true; self.vx.screen.cursor_row = y; self.vx.screen.cursor_col = x; diff --git a/src/tui/editor.zig b/src/tui/editor.zig index 1bc51be..9c329cf 100644 --- a/src/tui/editor.zig +++ b/src/tui/editor.zig @@ -1274,6 +1274,16 @@ pub const Editor = struct { } fn render_cursor_primary(self: *Self, cursor: *const Cursor, theme: *const Widget.Theme, cell_map: CellMap, focused: bool) !void { + const configured_shape = tui.get_cursor_shape(); + const cursor_shape = if (tui.rdr().vx.caps.multi_cursor) + configured_shape + else if (self.cursels.items.len > 1) switch (configured_shape) { + .beam => .block, + .beam_blink => .block_blink, + .underline => .block, + .underline_blink => .block_blink, + else => configured_shape, + } else configured_shape; if (self.screen_cursor(cursor)) |pos| { set_cell_map_cursor(cell_map, pos.row, pos.col); if (!focused or !tui.is_mainview_focused() or !self.enable_terminal_cursor) { @@ -1281,21 +1291,15 @@ pub const Editor = struct { const style = if (focused and tui.is_mainview_focused()) theme.editor_cursor else theme.editor_cursor_secondary; self.render_cursor_cell(style); } else { - const configured_shape = tui.get_cursor_shape(); - const cursor_shape = if (tui.rdr().vx.caps.multi_cursor) - configured_shape - else if (self.cursels.items.len > 1) switch (configured_shape) { - .beam => .block, - .beam_blink => .block_blink, - .underline => .block, - .underline_blink => .block_blink, - else => configured_shape, - } else configured_shape; const y, const x = self.plane.rel_yx_to_abs(@intCast(pos.row), @intCast(pos.col)); + tui.rdr().set_terminal_cursor_color(theme.editor_cursor.bg.?); tui.rdr().cursor_enable(y, x, cursor_shape) catch {}; } } else { - tui.rdr().cursor_enable(-1, -1, .default) catch {}; + if (self.enable_terminal_cursor) { + tui.rdr().set_terminal_cursor_color(theme.statusbar.bg.?); + tui.rdr().cursor_enable(-1, -1, cursor_shape) catch {}; + } } }