Skip to content

Commit

Permalink
Fix shrinking in non strech alignments while retaining legacy behaviour
Browse files Browse the repository at this point in the history
Summary:
This fixes shrinking of elements which are in a non stretch alignment, but keeps the legacy stretch behaviour in place. Additionally this adds a testcase for ```useLegacyStretchBehaviour```

Fixes #633
Closes facebook/yoga#635

Differential Revision: D6408037

Pulled By: emilsjolander

fbshipit-source-id: 377ab0308dd3a75a148a0af31ab5eb3ffb5b5d83
  • Loading branch information
woehrl01 authored and facebook-github-bot committed Nov 27, 2017
1 parent 382023e commit 57681a7
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion lib/yoga/src/main/cpp/yoga/Yoga.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2123,6 +2123,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
// If the main dimension size isn't known, it is computed based on
// the line length, so there's no more space left to distribute.

bool sizeBasedOnContent = false;
// If we don't measure with exact main dimension we want to ensure we don't violate min and max
if (measureModeMainDim != YGMeasureModeExactly) {
if (!YGFloatIsUndefined(minInnerMainDim) && sizeConsumedOnCurrentLine < minInnerMainDim) {
Expand All @@ -2137,11 +2138,12 @@ static void YGNodelayoutImpl(const YGNodeRef node,
// space we've used is all space we need. Root node also should be shrunk to minimum
availableInnerMainDim = sizeConsumedOnCurrentLine;
}
sizeBasedOnContent = !node->config->useLegacyStretchBehaviour;
}
}

float remainingFreeSpace = 0;
if (!YGFloatIsUndefined(availableInnerMainDim)) {
if (!sizeBasedOnContent && !YGFloatIsUndefined(availableInnerMainDim)) {
remainingFreeSpace = availableInnerMainDim - sizeConsumedOnCurrentLine;
} else if (sizeConsumedOnCurrentLine < 0) {
// availableInnerMainDim is indefinite which means the node is being sized based on its
Expand Down

0 comments on commit 57681a7

Please sign in to comment.