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: {