Remove YGNode::setAndPropogateUseLegacyFlag
Summary: `YGNode::setAndPropogateUseLegacyFlag` was only used for debugging purposes. Here, we replace it with a free function in `Yoga.cpp`. Now that we have events, the diffing functionality should go into a separate debugging package and be implemented in terms of an event listener. Let's do that as soon as we can support multiple listeners. Reviewed By: SidharthGuglani Differential Revision: D15316863 fbshipit-source-id: db929eba7c2de8aa1550e362dd2c175929c0070e
This commit is contained in:
committed by
Facebook Github Bot
parent
1938792517
commit
54e863cef2
@@ -254,7 +254,7 @@ public class YogaNodeTest {
|
||||
root_child0_child0_child0.setFlexShrink(1);
|
||||
root_child0_child0.addChildAt(root_child0_child0_child0, 0);
|
||||
root.calculateLayout(YogaConstants.UNDEFINED, YogaConstants.UNDEFINED);
|
||||
assertFalse(((YogaNodeJNIBase) root).getDoesLegacyStretchFlagAffectsLayout());
|
||||
assertTrue(((YogaNodeJNIBase) root).getDoesLegacyStretchFlagAffectsLayout());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@@ -539,13 +539,6 @@ bool YGNode::didUseLegacyFlag() {
|
||||
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;
|
||||
|
@@ -292,7 +292,6 @@ public:
|
||||
const float mainSize,
|
||||
const float crossSize,
|
||||
const float ownerWidth);
|
||||
void setAndPropogateUseLegacyFlag(bool useLegacyFlag);
|
||||
void setLayoutDoesLegacyFlagAffectsLayout(bool doesLegacyFlagAffectsLayout);
|
||||
void setLayoutDidUseLegacyFlag(bool didUseLegacyFlag);
|
||||
void markDirtyAndPropogateDownwards();
|
||||
|
@@ -3992,6 +3992,13 @@ static void YGRoundToPixelGrid(
|
||||
}
|
||||
}
|
||||
|
||||
static void unsetUseLegacyFlagRecursively(YGNodeRef node) {
|
||||
node->getConfig()->useLegacyStretchBehaviour = false;
|
||||
for (auto child : node->getChildren()) {
|
||||
unsetUseLegacyFlagRecursively(child);
|
||||
}
|
||||
}
|
||||
|
||||
void YGNodeCalculateLayoutWithContext(
|
||||
const YGNodeRef node,
|
||||
const float ownerWidth,
|
||||
@@ -4096,16 +4103,16 @@ void YGNodeCalculateLayoutWithContext(
|
||||
// run experiments.
|
||||
if (node->getConfig()->shouldDiffLayoutWithoutLegacyStretchBehaviour &&
|
||||
node->didUseLegacyFlag()) {
|
||||
const YGNodeRef originalNode = YGNodeDeepClone(node);
|
||||
originalNode->resolveDimension();
|
||||
const YGNodeRef nodeWithoutLegacyFlag = YGNodeDeepClone(node);
|
||||
nodeWithoutLegacyFlag->resolveDimension();
|
||||
// Recursively mark nodes as dirty
|
||||
originalNode->markDirtyAndPropogateDownwards();
|
||||
nodeWithoutLegacyFlag->markDirtyAndPropogateDownwards();
|
||||
gCurrentGenerationCount++;
|
||||
// Rerun the layout, and calculate the diff
|
||||
originalNode->setAndPropogateUseLegacyFlag(false);
|
||||
unsetUseLegacyFlagRecursively(nodeWithoutLegacyFlag);
|
||||
YGMarkerLayoutData layoutMarkerData;
|
||||
if (YGLayoutNodeInternal(
|
||||
originalNode,
|
||||
nodeWithoutLegacyFlag,
|
||||
width,
|
||||
height,
|
||||
ownerDirection,
|
||||
@@ -4115,37 +4122,37 @@ void YGNodeCalculateLayoutWithContext(
|
||||
ownerHeight,
|
||||
true,
|
||||
"initial",
|
||||
originalNode->getConfig(),
|
||||
nodeWithoutLegacyFlag->getConfig(),
|
||||
layoutMarkerData,
|
||||
layoutContext)) {
|
||||
originalNode->setPosition(
|
||||
originalNode->getLayout().direction,
|
||||
nodeWithoutLegacyFlag->setPosition(
|
||||
nodeWithoutLegacyFlag->getLayout().direction,
|
||||
ownerWidth,
|
||||
ownerHeight,
|
||||
ownerWidth);
|
||||
YGRoundToPixelGrid(
|
||||
originalNode,
|
||||
originalNode->getConfig()->pointScaleFactor,
|
||||
nodeWithoutLegacyFlag,
|
||||
nodeWithoutLegacyFlag->getConfig()->pointScaleFactor,
|
||||
0.0f,
|
||||
0.0f);
|
||||
|
||||
// Set whether the two layouts are different or not.
|
||||
auto neededLegacyStretchBehaviour =
|
||||
!originalNode->isLayoutTreeEqualToNode(*node);
|
||||
!nodeWithoutLegacyFlag->isLayoutTreeEqualToNode(*node);
|
||||
node->setLayoutDoesLegacyFlagAffectsLayout(neededLegacyStretchBehaviour);
|
||||
|
||||
#ifdef DEBUG
|
||||
if (originalNode->getConfig()->printTree) {
|
||||
if (nodeWithoutLegacyFlag->getConfig()->printTree) {
|
||||
YGNodePrint(
|
||||
originalNode,
|
||||
nodeWithoutLegacyFlag,
|
||||
(YGPrintOptions)(
|
||||
YGPrintOptionsLayout | YGPrintOptionsChildren |
|
||||
YGPrintOptionsStyle));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
YGConfigFreeRecursive(originalNode);
|
||||
YGNodeFreeRecursive(originalNode);
|
||||
YGConfigFreeRecursive(nodeWithoutLegacyFlag);
|
||||
YGNodeFreeRecursive(nodeWithoutLegacyFlag);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user