This commit is contained in:
2025-11-22 01:48:30 -06:00
parent 906b60276a
commit be416b0124

View File

@@ -100,6 +100,29 @@ clay.draw = function draw(fn, size = [prosperon.camera.width, prosperon.camera.h
node.marginbox.y -= margin.t; node.marginbox.y -= margin.t;
node.marginbox.width += margin.l+margin.r; node.marginbox.width += margin.l+margin.r;
node.marginbox.height += margin.t+margin.b; node.marginbox.height += margin.t+margin.b;
// Apply max_size clamping post-layout
if (node.config.max_size) {
if (node.config.max_size.width != null) {
// Clamp the layout rect size
var rect = lay_ctx.get_rect(node.id);
rect.width = Math.min(rect.width, node.config.max_size.width);
// Also clamp bounding box
node.content.width = Math.min(node.content.width, node.config.max_size.width);
node.boundingbox.width = Math.min(node.boundingbox.width, node.config.max_size.width + padding.l + padding.r);
node.marginbox.width = Math.min(node.marginbox.width, node.config.max_size.width + padding.l + padding.r + margin.l + margin.r);
}
if (node.config.max_size.height != null) {
// Clamp the layout rect size
var rect = lay_ctx.get_rect(node.id);
rect.height = Math.min(rect.height, node.config.max_size.height);
// Also clamp bounding box
node.content.height = Math.min(node.content.height, node.config.max_size.height);
node.boundingbox.height = Math.min(node.boundingbox.height, node.config.max_size.height + padding.t + padding.b);
node.marginbox.height = Math.min(node.marginbox.height, node.config.max_size.height + padding.t + padding.b + margin.t + margin.b);
}
}
node.content.y *= -1; node.content.y *= -1;
node.content.y += size.height; node.content.y += size.height;
node.boundingbox.y *= -1; node.boundingbox.y *= -1;
@@ -205,22 +228,10 @@ function add_item(config)
if (Array.isArray(use_config.size)) { if (Array.isArray(use_config.size)) {
use_config.size = {width: use_config.size[0], height: use_config.size[1]}; use_config.size = {width: use_config.size[0], height: use_config.size[1]};
} }
// Apply max_size constraint // Apply max_size constraint - only clamp computed size, don't set explicit size pre-layout
if (use_config.max_size) { if (use_config.max_size) {
// For containers with max_size, set explicit size to enable proper clipping // max_size should not force explicit sizing pre-layout - let children compute natural size,
if (use_config.contain && use_config.size.width == 0 && use_config.max_size.width != null) { // then clamp the container after layout. For now, just ensure we don't set size to max_size.
use_config.size.width = use_config.max_size.width;
}
if (use_config.contain && use_config.size.height == 0 && use_config.max_size.height != null) {
use_config.size.height = use_config.max_size.height;
}
// Clamp any size that exceeds max_size
if (use_config.max_size.width != null && use_config.size.width > use_config.max_size.width) {
use_config.size.width = use_config.max_size.width;
}
if (use_config.max_size.height != null && use_config.size.height > use_config.max_size.height) {
use_config.size.height = use_config.max_size.height;
}
} }
lay_ctx.set_size(item,use_config.size); lay_ctx.set_size(item,use_config.size);
lay_ctx.set_contain(item,use_config.contain); lay_ctx.set_contain(item,use_config.contain);