From 26232c3af365de46a7b12c43d873f40a87f666ba Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Mon, 20 May 2024 11:06:27 +0200 Subject: [PATCH] fix: allow wrapping in putstr calls on scrollable vaxis planes --- src/renderer/vaxis/Plane.zig | 8 ++++++-- src/tui/logview.zig | 4 +--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/renderer/vaxis/Plane.zig b/src/renderer/vaxis/Plane.zig index 4ef18fb..d8ba649 100644 --- a/src/renderer/vaxis/Plane.zig +++ b/src/renderer/vaxis/Plane.zig @@ -142,8 +142,6 @@ pub fn putstr(self: *Plane, text: []const u8) !usize { const width = self.window.width; var iter = self.window.screen.unicode.graphemeIterator(text); while (iter.next()) |grapheme| { - if (self.col >= width) - return result; const s = grapheme.bytes(text); if (std.mem.eql(u8, s, "\n")) { if (self.scrolling and self.row == height - 1) @@ -154,6 +152,12 @@ pub fn putstr(self: *Plane, text: []const u8) !usize { result += 1; continue; } + if (self.col >= width) { + if (self.scrolling) { + self.row += 1; + self.col = 0; + } else return result; + } self.write_cell(@intCast(self.col), @intCast(self.row), s); result += 1; } diff --git a/src/tui/logview.zig b/src/tui/logview.zig index 4a04d03..5aca079 100644 --- a/src/tui/logview.zig +++ b/src/tui/logview.zig @@ -46,7 +46,6 @@ pub fn deinit(self: *Self, a: Allocator) void { pub fn render(self: *Self, theme: *const Widget.Theme) bool { self.plane.set_base_style(" ", theme.panel); - self.plane.erase(); self.plane.home(); const height = self.plane.dim_y(); @@ -57,11 +56,10 @@ pub fn render(self: *Self, theme: *const Widget.Theme) bool { for (buffer.items[begin_at..]) |item| { if (first) first = false else _ = self.plane.putstr("\n") catch return false; self.output_tdiff(item.tdiff) catch return false; - _ = self.plane.print("{s}: {s}", .{ escape(item.src), escape(item.msg) }) catch return false; + _ = self.plane.print("{s}: {s}", .{ escape(item.src), escape(item.msg) }) catch {}; } if (last_count > 0) _ = self.plane.print(" ({})", .{last_count}) catch {}; - return false; }