From 6ce985463b2724451baed8b0486b298f969e36e7 Mon Sep 17 00:00:00 2001 From: Sidharth Guglani Date: Wed, 31 Jul 2019 14:33:36 -0700 Subject: [PATCH] create two layout pass reason flexLayout and flexMeasure instead of flex Summary: We had flex as a reason for both layout and measure. Now creating separating reason flexLayout and flexMeasure in this diff. Also changed ordering of items in Enum to group layout and measure reasons Reviewed By: davidaurelio Differential Revision: D16562350 fbshipit-source-id: 75501f9d4dde0974009193b3991a8acc97b02ad0 --- .../com/facebook/yoga/LayoutPassReason.java | 26 ++++++++++--------- ReactCommon/yoga/yoga/Yoga.cpp | 6 +++-- ReactCommon/yoga/yoga/event/event.cpp | 14 +++++----- ReactCommon/yoga/yoga/event/event.h | 13 +++++----- 4 files changed, 33 insertions(+), 26 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/yoga/LayoutPassReason.java b/ReactAndroid/src/main/java/com/facebook/yoga/LayoutPassReason.java index dc72ad4ffb24ee..6406a95c4244e4 100644 --- a/ReactAndroid/src/main/java/com/facebook/yoga/LayoutPassReason.java +++ b/ReactAndroid/src/main/java/com/facebook/yoga/LayoutPassReason.java @@ -8,12 +8,13 @@ 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 int intValue() { 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/ReactCommon/yoga/yoga/Yoga.cpp b/ReactCommon/yoga/yoga/Yoga.cpp index e87fa325165397..d187bcd0b61fcf 100644 --- a/ReactCommon/yoga/yoga/Yoga.cpp +++ b/ReactCommon/yoga/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/ReactCommon/yoga/yoga/event/event.cpp b/ReactCommon/yoga/yoga/event/event.cpp index 326214fc4e15fa..48e8f41da83cee 100644 --- a/ReactCommon/yoga/yoga/event/event.cpp +++ b/ReactCommon/yoga/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/ReactCommon/yoga/yoga/event/event.h b/ReactCommon/yoga/yoga/event/event.h index 618574e8da38a0..65d13f59a60fbb 100644 --- a/ReactCommon/yoga/yoga/event/event.h +++ b/ReactCommon/yoga/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);