fix(cotainer/border): seperator placement without border's and gap

This commit is contained in:
2025-02-15 11:25:20 +01:00
parent a6aa6e5150
commit 5c148e1aa5
2 changed files with 8 additions and 12 deletions

View File

@@ -24,15 +24,11 @@ pub fn main() !void {
defer renderer.deinit(); defer renderer.deinit();
var container = try App.Container.init(allocator, .{ var container = try App.Container.init(allocator, .{
.border = .{ .border = .{ .separator = .{ .enabled = true } },
.color = .blue,
.corners = .rounded,
.sides = .all(),
.separator = .{ .enabled = true },
},
.layout = .{ .layout = .{
.gap = 2,
.padding = .all(5), .padding = .all(5),
.direction = .vertical, .direction = .horizontal,
}, },
}); });
var box = try App.Container.init(allocator, .{ var box = try App.Container.init(allocator, .{

View File

@@ -83,7 +83,7 @@ pub const Border = packed struct {
if (this.sides.bottom) cells[last_row + col].style.fg = this.color; if (this.sides.bottom) cells[last_row + col].style.fg = this.color;
} }
// render left and right border // render left and right border
for (1..size.rows - 1) |row| { for (1..size.rows -| 1) |row| {
const idx = (row * size.cols); const idx = (row * size.cols);
if (this.sides.left) { if (this.sides.left) {
cells[idx].cp = frame[3]; // left cells[idx].cp = frame[3]; // left
@@ -133,7 +133,7 @@ pub const Border = packed struct {
}; };
switch (layout.direction) { switch (layout.direction) {
.horizontal => { .horizontal => {
offset += (layout.gap + 1) / 2; offset += layout.gap / 2;
for (0..len - 1) |_| { for (0..len - 1) |_| {
var cols = element_cols; var cols = element_cols;
if (overflow > 0) { if (overflow > 0) {
@@ -141,7 +141,7 @@ pub const Border = packed struct {
cols += 1; cols += 1;
} }
offset += cols; offset += cols;
for (1..size.rows - 1) |row| { for (1..size.rows -| 1) |row| {
// TODO: support the line options // TODO: support the line options
cells[row * size.cols + offset].cp = frame[3]; cells[row * size.cols + offset].cp = frame[3];
cells[row * size.cols + offset].style.fg = this.separator.color; cells[row * size.cols + offset].style.fg = this.separator.color;
@@ -150,7 +150,7 @@ pub const Border = packed struct {
} }
}, },
.vertical => { .vertical => {
offset += (layout.gap + 1) / 2; offset += layout.gap / 2;
for (0..len - 1) |_| { for (0..len - 1) |_| {
var rows = element_rows; var rows = element_rows;
if (overflow > 0) { if (overflow > 0) {
@@ -158,7 +158,7 @@ pub const Border = packed struct {
rows += 1; rows += 1;
} }
offset += rows; offset += rows;
for (1..size.cols - 1) |col| { for (1..size.cols -| 1) |col| {
// TODO: support the line options // TODO: support the line options
cells[offset * size.cols + col].cp = frame[1]; cells[offset * size.cols + col].cp = frame[1];
cells[offset * size.cols + col].style.fg = this.separator.color; cells[offset * size.cols + col].style.fg = this.separator.color;