From 825da1e8685e115b403b3661c59f19d05f7e6f93 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 --- java/com/facebook/yoga/LayoutPassReason.java | 26 +++++++++++--------- yoga/Yoga.cpp | 6 +++-- yoga/event/event.cpp | 14 ++++++----- yoga/event/event.h | 13 +++++----- 4 files changed, 33 insertions(+), 26 deletions(-) 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);