Remove the use of legacy flag and log the diff if its used
Summary: Check if the layout tree is different if we do not use legacy flags. If they are different then report to the client Reviewed By: emilsjolander Differential Revision: D6856812 fbshipit-source-id: e4724d80702cc75c1894e348e137b24e663573d2
This commit is contained in:
committed by
Facebook Github Bot
parent
66045bd13d
commit
63be3ff84c
@@ -572,6 +572,13 @@ void YGNode::markDirtyAndPropogate() {
|
||||
}
|
||||
}
|
||||
|
||||
void YGNode::markDirtyAndPropogateDownwards() {
|
||||
isDirty_ = true;
|
||||
for_each(children_.begin(), children_.end(), [](YGNodeRef childNode) {
|
||||
childNode->markDirtyAndPropogateDownwards();
|
||||
});
|
||||
}
|
||||
|
||||
float YGNode::resolveFlexGrow() {
|
||||
// Root nodes flexGrow should always be 0
|
||||
if (parent_ == nullptr) {
|
||||
@@ -666,3 +673,57 @@ float YGNode::getLeadingPaddingAndBorder(
|
||||
const float widthSize) {
|
||||
return getLeadingPadding(axis, widthSize) + getLeadingBorder(axis);
|
||||
}
|
||||
|
||||
bool YGNode::didUseLegacyFlag() {
|
||||
bool didUseLegacyFlag = layout_.didUseLegacyFlag;
|
||||
if (didUseLegacyFlag) {
|
||||
return true;
|
||||
}
|
||||
for (const auto& child : children_) {
|
||||
if (child->layout_.didUseLegacyFlag) {
|
||||
didUseLegacyFlag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return didUseLegacyFlag;
|
||||
}
|
||||
|
||||
void YGNode::setAndPropogateUseLegacyFlag(bool useLegacyFlag) {
|
||||
config_->useLegacyStretchBehaviour = useLegacyFlag;
|
||||
for_each(children_.begin(), children_.end(), [=](YGNodeRef childNode) {
|
||||
childNode->getConfig()->useLegacyStretchBehaviour = useLegacyFlag;
|
||||
});
|
||||
}
|
||||
|
||||
void YGNode::setLayoutDoesLegacyFlagAffectsLayout(
|
||||
bool doesLegacyFlagAffectsLayout) {
|
||||
layout_.doesLegacyStretchFlagAffectsLayout = doesLegacyFlagAffectsLayout;
|
||||
}
|
||||
|
||||
void YGNode::setLayoutDidUseLegacyFlag(bool didUseLegacyFlag) {
|
||||
layout_.didUseLegacyFlag = didUseLegacyFlag;
|
||||
}
|
||||
|
||||
bool YGNode::isLayoutTreeEqualToNode(const YGNode& node) const {
|
||||
if (children_.size() != node.children_.size()) {
|
||||
return false;
|
||||
}
|
||||
if (layout_ != node.layout_) {
|
||||
return false;
|
||||
}
|
||||
if (children_.size() == 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool isLayoutTreeEqual = true;
|
||||
YGNodeRef otherNodeChildren = nullptr;
|
||||
for (std::vector<YGNodeRef>::size_type i = 0; i < children_.size(); ++i) {
|
||||
otherNodeChildren = node.children_[i];
|
||||
isLayoutTreeEqual =
|
||||
children_[i]->isLayoutTreeEqualToNode(*otherNodeChildren);
|
||||
if (!isLayoutTreeEqual) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return isLayoutTreeEqual;
|
||||
}
|
||||
|
Reference in New Issue
Block a user