From 1e59a7c59321c2346c59764985719d13e97a2c65 Mon Sep 17 00:00:00 2001 From: Yves Biener Date: Wed, 13 Nov 2024 16:10:25 +0100 Subject: [PATCH] add(Layout/Padding): clear only when necessary --- src/layout/Padding.zig | 7 +++++++ src/main.zig | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/layout/Padding.zig b/src/layout/Padding.zig index 9068d0c..805ec39 100644 --- a/src/layout/Padding.zig +++ b/src/layout/Padding.zig @@ -21,6 +21,7 @@ pub fn Layout(comptime Event: type, comptime Element: type, comptime Renderer: t const Events = std.ArrayList(Event); return struct { size: terminal.Size = undefined, + require_render: bool = false, element: Element = undefined, events: Events = undefined, config: Config = undefined, @@ -60,6 +61,7 @@ pub fn Layout(comptime Event: type, comptime Element: type, comptime Renderer: t switch (event) { .resize => |size| { this.size = size; + this.require_render = true; log.debug("Event .resize: {{ .anchor = {{ .col = {d}, .row = {d} }}, .cols = {d}, .rows = {d} }}", .{ size.anchor.col, size.anchor.row, @@ -123,6 +125,11 @@ pub fn Layout(comptime Event: type, comptime Element: type, comptime Renderer: t } pub fn render(this: *@This(), renderer: *Renderer) !void { + if (this.require_render) { + try renderer.clear(this.size); + this.require_render = false; + } + switch ((&this.element).*) { .layout => |*layout| { try layout.render(renderer); diff --git a/src/main.zig b/src/main.zig index 6e174f9..86a51fe 100644 --- a/src/main.zig +++ b/src/main.zig @@ -81,7 +81,7 @@ pub fn main() !void { var padding = Layout.Padding.init( allocator, .{ - .padding = 1, + .padding = 3, }, .{ .layout = Layout.createFrom(vstack: {