Report
Issues and Steps to Reproduce
- Run the code below
- Uncomment the line of 'YGNodeSetMeasureFunc', run again.
Expected Behavior
Expected the child node's width should be 282.
{layout: {width: 282, height: 200, top: 0, left: 0}, flexDirection: 'column', alignItems: 'stretch', alignContent: 'stretch', flexGrow: 0, flexShrink: 0, flexBasis: nan%, overflow: 'hidden', width: nan%, height: 200pt, children: [
{layout: {width: 282, height: 200, top: 0, left: 0}, flexDirection: 'column', alignItems: 'stretch', alignContent: 'stretch', alignSelf: 'stretch', flexGrow: 0, flexShrink: 0, flexBasis: nan%, overflow: 'hidden', padding: 100pt, width: nan%, height: nan%, },
]},
Actual Behavior
Get different calculation results while set 'YGNodeSetMeasureFunc' or not even if the function was never invoked actually both cases.
{layout: {width: 282, height: 200, top: 0, left: 0}, flexDirection: 'column', alignItems: 'stretch', alignContent: 'stretch', flexGrow: 0, flexShrink: 0, flexBasis: nan%, overflow: 'hidden', width: nan%, height: 200pt, children: [
{layout: {width: 200, height: 200, top: 0, left: 0}, flexDirection: 'column', alignItems: 'stretch', alignContent: 'stretch', alignSelf: 'stretch', flexGrow: 0, flexShrink: 0, flexBasis: nan%, overflow: 'hidden', padding: 100pt, width: nan%, height: nan%, },
]},
Link to Code
#include <iostream>
#include "Yoga.h"
#include <stdlib.h>
#include <stdio.h>
#include <vector>
static YGSize YGMeasureFuncForLabel(YGNodeRef node,
float width,
YGMeasureMode widthMode,
float height,
YGMeasureMode heightMode) {
// this function was never invoked.
YGSize size;
size.width = 8;
size.height = 16;
return size;
}
int main(int argc, const char * argv[]) {
const YGNodeRef root = YGNodeNew();
YGNodeStyleSetHeight(root, 200);
YGNodeStyleSetFlexDirection(root, YGFlexDirectionColumn);
YGNodeStyleSetAlignItems(root, YGAlignStretch);
YGNodeStyleSetAlignContent(root, YGAlignStretch);
YGNodeStyleSetFlexGrow(root, 0);
YGNodeStyleSetOverflow(root, YGOverflowHidden);
YGNodeStyleSetAlignSelf(root, YGAlignAuto);
YGNodeStyleSetPositionType(root, YGPositionTypeRelative);
YGNodeStyleSetJustifyContent(root, YGJustifyFlexStart);
const YGNodeRef root_child0 = YGNodeNew();
YGNodeStyleSetFlexDirection(root_child0, YGFlexDirectionColumn);
YGNodeStyleSetAlignItems(root_child0, YGAlignStretch);
YGNodeStyleSetAlignContent(root_child0, YGAlignStretch);
YGNodeStyleSetAlignSelf(root_child0, YGAlignStretch);
YGNodeStyleSetJustifyContent(root_child0, YGJustifyFlexStart);
YGNodeStyleSetOverflow(root_child0, YGOverflowHidden);
YGNodeStyleSetPadding(root_child0, YGEdgeLeft, 100);
YGNodeStyleSetPadding(root_child0, YGEdgeTop, 100);
YGNodeStyleSetPadding(root_child0, YGEdgeRight, 100);
YGNodeStyleSetPadding(root_child0, YGEdgeBottom, 100);
YGNodeInsertChild(root, root_child0, 0);
//YGNodeSetMeasureFunc(root_child0, &YGMeasureFuncForLabel);
YGNodeCalculateLayout(root, 282, YGUndefined, YGDirectionLTR);
YGNodeFreeRecursive(root);
}
When applicable, use this fiddle to post a web repro.
Report
Issues and Steps to Reproduce
Expected Behavior
Expected the child node's width should be 282.
Actual Behavior
Get different calculation results while set 'YGNodeSetMeasureFunc' or not even if the function was never invoked actually both cases.
Link to Code
When applicable, use this fiddle to post a web repro.