fix: render cursor correctly in case the same character remains the cursor position
Some checks failed
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 47s

This commit is contained in:
2025-06-11 20:32:35 +02:00
parent 825fb63bc8
commit d0453d08b8

View File

@@ -96,12 +96,18 @@ pub const Buffered = struct {
const idx = (row * this.size.x) + col;
const cs = s[idx];
const cvs = vs[idx];
// update the latest found cursor position
if (cvs.style.cursor) {
assert(cursor_position == null);
cursor_position = .{
.x = @truncate(col),
.y = @truncate(row),
};
}
if (cs.eql(cvs)) continue;
if (cvs.style.cursor) cursor_position = .{
.x = @truncate(col),
.y = @truncate(row),
};
// render differences found in virtual screen
try terminal.setCursorPosition(.{ .y = @truncate(row), .x = @truncate(col) });
try cvs.value(writer);
@@ -118,6 +124,7 @@ pub const Buffered = struct {
const std = @import("std");
const meta = std.meta;
const assert = std.debug.assert;
const Allocator = std.mem.Allocator;
const terminal = @import("terminal.zig");
const Cell = @import("cell.zig");