diff --git a/java/com/facebook/yoga/LayoutPassReason.java b/java/com/facebook/yoga/LayoutPassReason.java index dc72ad4f..6406a95c 100644 --- a/java/com/facebook/yoga/LayoutPassReason.java +++ b/java/com/facebook/yoga/LayoutPassReason.java @@ -8,12 +8,13 @@ package com.facebook.yoga; public enum LayoutPassReason { INITIAL(0), - MEASURE(1), - ABS_MEASURE(2), - FLEX(3), - ABS_LAYOUT(4), - STRETCH(5), - MULTILINE_STRETCH(6); + ABS_LAYOUT(1), + STRETCH(2), + MULTILINE_STRETCH(3), + FLEX_LAYOUT(4), + MEASURE(5), + ABS_MEASURE(6), + FLEX_MEASURE(7); private final int mIntValue; @@ -28,12 +29,13 @@ public enum LayoutPassReason { public static LayoutPassReason fromInt(int value) { switch (value) { case 0: return INITIAL; - case 1: return MEASURE; - case 2: return ABS_MEASURE; - case 3: return FLEX; - case 4: return ABS_LAYOUT; - case 5: return STRETCH; - case 6: return MULTILINE_STRETCH; + case 1: return ABS_LAYOUT; + case 2: return STRETCH; + case 3: return MULTILINE_STRETCH; + case 4: return FLEX_LAYOUT; + case 5: return MEASURE; + case 6: return ABS_MEASURE; + case 7: return FLEX_MEASURE; default: throw new IllegalArgumentException("Unknown enum value: " + value); } } diff --git a/yoga/Yoga.cpp b/yoga/Yoga.cpp index e87fa325..d187bcd0 100644 --- a/yoga/Yoga.cpp +++ b/yoga/Yoga.cpp @@ -2185,6 +2185,7 @@ static float YGDistributeFreeSpaceSecondPass( const YGMeasureMode childHeightMeasureMode = !isMainAxisRow ? childMainMeasureMode : childCrossMeasureMode; + const bool isLayoutPass = performLayout && !requiresStretchLayout; // Recursively call the layout algorithm for this child with the updated // main size. YGLayoutNodeInternal( @@ -2196,8 +2197,9 @@ static float YGDistributeFreeSpaceSecondPass( childHeightMeasureMode, availableInnerWidth, availableInnerHeight, - performLayout && !requiresStretchLayout, - LayoutPassReason::kFlex, + isLayoutPass, + isLayoutPass ? LayoutPassReason::kFlexLayout + : LayoutPassReason::kFlexMeasure, config, layoutMarkerData, layoutContext, diff --git a/yoga/event/event.cpp b/yoga/event/event.cpp index 326214fc..48e8f41d 100644 --- a/yoga/event/event.cpp +++ b/yoga/event/event.cpp @@ -16,18 +16,20 @@ const char* LayoutPassReasonToString(const LayoutPassReason value) { switch (value) { case LayoutPassReason::kInitial: return "initial"; - case LayoutPassReason::kMeasureChild: - return "measure"; - case LayoutPassReason::kAbsMeasureChild: - return "abs_measure"; - case LayoutPassReason::kFlex: - return "flex"; case LayoutPassReason::kAbsLayout: return "abs_layout"; case LayoutPassReason::kStretch: return "stretch"; case LayoutPassReason::kMultilineStretch: return "multiline_stretch"; + case LayoutPassReason::kFlexLayout: + return "flex_layout"; + case LayoutPassReason::kMeasureChild: + return "measure"; + case LayoutPassReason::kAbsMeasureChild: + return "abs_measure"; + case LayoutPassReason::kFlexMeasure: + return "flex_measure"; default: return "unknown"; } diff --git a/yoga/event/event.h b/yoga/event/event.h index 618574e8..65d13f59 100644 --- a/yoga/event/event.h +++ b/yoga/event/event.h @@ -34,12 +34,13 @@ struct LayoutData { enum struct LayoutPassReason : int { kInitial = 0, - kMeasureChild = 1, - kAbsMeasureChild = 2, - kFlex = 3, - kAbsLayout = 4, - kStretch = 5, - kMultilineStretch = 6 + kAbsLayout = 1, + kStretch = 2, + kMultilineStretch = 3, + kFlexLayout = 4, + kMeasureChild = 5, + kAbsMeasureChild = 6, + kFlexMeasure = 7 }; const char* LayoutPassReasonToString(const LayoutPassReason value);