Skip to content

Commit 791afee

Browse files
Fix auto-sized parent not accounting for child min-width in canSkipFlex path
Summary: When a flex container with auto main-axis is measured with a with a known cross dimensions, the `canSkipFlex` optimization in `justifyMainAxis` uses `computedFlexBasis` directly. This doesn't account for the `min` & `max` width constraints, causing the parent to undersize. I have added a `.html` test page here to mirror the C++ test I added to confirm that flexbox does respect the min-width constraint. [minwidth-test.html](https://github.com/user-attachments/files/25695677/minwidth-test.html) Changelog: [internal] X-link: facebook/yoga#1905 Reviewed By: sammy-SC, adityasharat Differential Revision: D95177338 Pulled By: NickGerleman
1 parent 320e3bd commit 791afee

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

packages/react-native/ReactCommon/yoga/yoga/algorithm/CalculateLayout.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1149,7 +1149,14 @@ static void justifyMainAxis(
11491149
// dimensionWithMargin.
11501150
flexLine.layout.mainDim +=
11511151
child->style().computeMarginForAxis(mainAxis, availableInnerWidth) +
1152-
childLayout.computedFlexBasis.unwrap();
1152+
boundAxisWithinMinAndMax(
1153+
child,
1154+
direction,
1155+
mainAxis,
1156+
childLayout.computedFlexBasis,
1157+
mainAxisOwnerSize,
1158+
ownerWidth)
1159+
.unwrap();
11531160
flexLine.layout.crossDim = availableInnerCrossDim;
11541161
} else {
11551162
// The main dimension is the sum of all the elements dimension plus

0 commit comments

Comments
 (0)