diff --git a/engine/breeze/ui/ui.c b/engine/breeze/ui/ui.c index 811bc1c..34e5e21 100644 --- a/engine/breeze/ui/ui.c +++ b/engine/breeze/ui/ui.c @@ -187,16 +187,20 @@ static void calculatePositionsFlexBox(BzUINode *node) { BZ_ASSERT(node->layout.type == BZ_UI_LAYOUT_FLEX_BOX); BzUIFlags flags = node->layout.flags; - f32 totalMainAxisSize = 0.0f; + f32 totalMainAxisSize = 0.0f; + f32 mainAxisSpacing = 0.0f; const i32 MAIN_AXIS = (flags & BZ_UI_FLEX_DIR_COLUMN) ? BZ_UI_AXIS_Y : BZ_UI_AXIS_X; const i32 CROSS_AXIS = (flags & BZ_UI_FLEX_DIR_COLUMN) ? BZ_UI_AXIS_X : BZ_UI_AXIS_Y; for (BzUINode *child = node->first; child; child = child->next) { - totalMainAxisSize += child->computedSize[MAIN_AXIS]; + totalMainAxisSize += child->computedSize[MAIN_AXIS]; + mainAxisSpacing += child->margin[MAIN_AXIS] + + child->margin[MAIN_AXIS + 2] + + child->style.borderThickness * 2; } - f32 mainAxisTotalSpacing = node->computedSize[MAIN_AXIS] - totalMainAxisSize; + f32 mainAxisTotalSpacing = node->computedSize[MAIN_AXIS] - totalMainAxisSize - mainAxisSpacing; mainAxisTotalSpacing = BZ_MAX(0, mainAxisTotalSpacing); // Default: JUSTIFY_START @@ -219,7 +223,9 @@ static void calculatePositionsFlexBox(BzUINode *node) { axisOffset[CROSS_AXIS] += node->computedSize[CROSS_AXIS] - child->computedSize[CROSS_AXIS]; } + axisOffset[MAIN_AXIS] += child->margin[MAIN_AXIS]; calculatePositions(child, axisOffset[BZ_UI_AXIS_X], axisOffset[BZ_UI_AXIS_Y]); + axisOffset[MAIN_AXIS] += child->margin[MAIN_AXIS + 2]; axisOffset[MAIN_AXIS] += child->computedSize[MAIN_AXIS]; }