diff --git a/ReactCommon/yoga/yoga/YGNode.cpp b/ReactCommon/yoga/yoga/YGNode.cpp index caee38443..c5ddd2f82 100644 --- a/ReactCommon/yoga/yoga/YGNode.cpp +++ b/ReactCommon/yoga/yoga/YGNode.cpp @@ -590,3 +590,9 @@ float YGNode::resolveFlexShrink() { } return config_->useWebDefaults ? kWebDefaultFlexShrink : kDefaultFlexShrink; } + +bool YGNode::isNodeFlexible() { + return ( + (style_.positionType == YGPositionTypeRelative) && + (resolveFlexGrow() != 0 || resolveFlexShrink() != 0)); +} diff --git a/ReactCommon/yoga/yoga/YGNode.h b/ReactCommon/yoga/yoga/YGNode.h index b90c0e336..0ac44d1b4 100644 --- a/ReactCommon/yoga/yoga/YGNode.h +++ b/ReactCommon/yoga/yoga/YGNode.h @@ -111,7 +111,11 @@ struct YGNode { void setLayoutMeasuredDimension(float measuredDimension, int index); void setLayoutHadOverflow(bool hadOverflow); void setLayoutDimension(float dimension, int index); - + void setLayoutDirection(YGDirection direction); + void setLayoutMargin(float margin, int index); + void setLayoutBorder(float border, int index); + void setLayoutPadding(float padding, int index); + void setLayoutPosition(float position, int index); void setPosition( const YGDirection direction, const float mainSize, @@ -131,15 +135,10 @@ struct YGNode { /// Removes the first occurrence of child bool removeChild(YGNodeRef child); void removeChild(uint32_t index); - void setLayoutDirection(YGDirection direction); - void setLayoutMargin(float margin, int index); - void setLayoutBorder(float border, int index); - void setLayoutPadding(float padding, int index); - void setLayoutPosition(float position, int index); - // Other methods void cloneChildrenIfNeeded(); void markDirtyAndPropogate(); float resolveFlexGrow(); float resolveFlexShrink(); + bool isNodeFlexible(); }; diff --git a/ReactCommon/yoga/yoga/Yoga.cpp b/ReactCommon/yoga/yoga/Yoga.cpp index d4171d619..275ccc6cf 100644 --- a/ReactCommon/yoga/yoga/Yoga.cpp +++ b/ReactCommon/yoga/yoga/Yoga.cpp @@ -915,12 +915,6 @@ static float YGBaseline(const YGNodeRef node) { return baseline + baselineChild->getLayout().position[YGEdgeTop]; } -static inline bool YGNodeIsFlex(const YGNodeRef node) { - return ( - node->getStyle().positionType == YGPositionTypeRelative && - (node->resolveFlexGrow() != 0 || node->resolveFlexShrink() != 0)); -} - static bool YGIsBaselineLayout(const YGNodeRef node) { if (YGFlexDirectionIsColumn(node->getStyle().flexDirection)) { return false; @@ -1611,7 +1605,7 @@ static void YGNodeComputeFlexBasisForChildren( if (measureModeMainDim == YGMeasureModeExactly) { for (auto child : children) { if (singleFlexChild != nullptr) { - if (YGNodeIsFlex(child)) { + if (child->isNodeFlexible()) { // There is already a flexible child, abort singleFlexChild = nullptr; break; @@ -2033,7 +2027,7 @@ static void YGNodelayoutImpl(const YGNodeRef node, sizeConsumedOnCurrentLine += flexBasisWithMinAndMaxConstraints + childMarginMainAxis; itemsOnLine++; - if (YGNodeIsFlex(child)) { + if (child->isNodeFlexible()) { totalFlexGrowFactors += child->resolveFlexGrow(); // Unlike the grow factor, the shrink factor is scaled relative to the child dimension.