mod(size): rename merge function to add; new max function
All checks were successful
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m6s
All checks were successful
Zig Project Action / Lint, Spell-check and test zig project (push) Successful in 1m6s
This commit is contained in:
@@ -595,7 +595,7 @@ pub fn Container(comptime Event: type) type {
|
|||||||
const len: u16 = @truncate(this.elements.items.len);
|
const len: u16 = @truncate(this.elements.items.len);
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
for (this.elements.items) |element| {
|
for (this.elements.items) |element| {
|
||||||
size = size.merge(element.minSize());
|
size = size.add(element.minSize());
|
||||||
}
|
}
|
||||||
var gap = this.properties.layout.gap;
|
var gap = this.properties.layout.gap;
|
||||||
if (this.properties.layout.separator.enabled) gap += 1;
|
if (this.properties.layout.separator.enabled) gap += 1;
|
||||||
@@ -605,10 +605,7 @@ pub fn Container(comptime Event: type) type {
|
|||||||
.vertical => size.rows += gap * (len - 1),
|
.vertical => size.rows += gap * (len - 1),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return .{
|
return size.max(this.properties.min_size);
|
||||||
.cols = @max(size.cols, this.properties.min_size.cols),
|
|
||||||
.rows = @max(size.rows, this.properties.min_size.rows),
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn handle(this: *@This(), event: Event) !void {
|
pub fn handle(this: *@This(), event: Event) !void {
|
||||||
|
|||||||
@@ -86,12 +86,8 @@ pub fn Scrollable(Event: type) type {
|
|||||||
.resize => |size| {
|
.resize => |size| {
|
||||||
this.size = size;
|
this.size = size;
|
||||||
// TODO: scrollbar space - depending on configuration and only if necessary?
|
// TODO: scrollbar space - depending on configuration and only if necessary?
|
||||||
const min_size = this.container.minSize();
|
this.container_size = size.max(this.container.minSize());
|
||||||
this.container_size = .{
|
this.container_size.anchor = size.anchor;
|
||||||
.anchor = size.anchor,
|
|
||||||
.cols = @max(min_size.cols, size.cols),
|
|
||||||
.rows = @max(min_size.rows, size.rows),
|
|
||||||
};
|
|
||||||
try this.container.handle(.{ .resize = this.container_size });
|
try this.container.handle(.{ .resize = this.container_size });
|
||||||
},
|
},
|
||||||
// TODO: other means to scroll except with the mouse? (i.e. Ctrl-u/d, k/j, etc.?)
|
// TODO: other means to scroll except with the mouse? (i.e. Ctrl-u/d, k/j, etc.?)
|
||||||
|
|||||||
51
src/size.zig
51
src/size.zig
@@ -3,12 +3,61 @@ pub const Size = packed struct {
|
|||||||
cols: u16 = 0,
|
cols: u16 = 0,
|
||||||
rows: u16 = 0,
|
rows: u16 = 0,
|
||||||
|
|
||||||
pub fn merge(this: @This(), other: @This()) Size {
|
pub fn add(this: @This(), other: @This()) Size {
|
||||||
return .{
|
return .{
|
||||||
.cols = this.cols + other.cols,
|
.cols = this.cols + other.cols,
|
||||||
.rows = this.rows + other.rows,
|
.rows = this.rows + other.rows,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn max(this: @This(), other: @This()) Size {
|
||||||
|
return .{
|
||||||
|
.cols = @max(this.cols, other.cols),
|
||||||
|
.rows = @max(this.rows, other.rows),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
test "adding" {
|
||||||
|
const testing = @import("std").testing;
|
||||||
|
|
||||||
|
const a: @This() = .{
|
||||||
|
.anchor = .{ .col = 1, .row = 2 },
|
||||||
|
.cols = 10,
|
||||||
|
.rows = 20,
|
||||||
|
};
|
||||||
|
|
||||||
|
const b: @This() = .{
|
||||||
|
.anchor = .{ .col = 5, .row = 20 },
|
||||||
|
.cols = 20,
|
||||||
|
.rows = 10,
|
||||||
|
};
|
||||||
|
|
||||||
|
try testing.expectEqual(@This(){
|
||||||
|
.cols = 30,
|
||||||
|
.rows = 30,
|
||||||
|
}, a.add(b));
|
||||||
|
}
|
||||||
|
|
||||||
|
test "maximum" {
|
||||||
|
const testing = @import("std").testing;
|
||||||
|
|
||||||
|
const a: @This() = .{
|
||||||
|
.anchor = .{ .col = 1, .row = 2 },
|
||||||
|
.cols = 10,
|
||||||
|
.rows = 20,
|
||||||
|
};
|
||||||
|
|
||||||
|
const b: @This() = .{
|
||||||
|
.anchor = .{ .col = 5, .row = 20 },
|
||||||
|
.cols = 20,
|
||||||
|
.rows = 10,
|
||||||
|
};
|
||||||
|
|
||||||
|
try testing.expectEqual(@This(){
|
||||||
|
.cols = 20,
|
||||||
|
.rows = 20,
|
||||||
|
}, a.max(b));
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
pub const Position = packed struct {
|
pub const Position = packed struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user