-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Closed
Description
Report
- I have searched existing issues and this is not a duplicate
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.
Metadata
Metadata
Assignees
Labels
No labels