From ec60ebe79246ba0c90193c411fa8aa7be810b73d Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Mon, 20 Jul 2020 00:31:15 -0700 Subject: [PATCH] Introducing `YGPositionTypeStatic` Summary: Changelog: [Internal] Fabric-specific internal change. This diff introduces a new value for `YGPositionType`: `YGPositionTypeStatic`. No part of Yoga, RN, Litho or CK uses this value yet. `relative` and `static` values behave the same way for now. We also do not change any defaults. So, it should be fine. Reviewed By: SidharthGuglani Differential Revision: D22386732 fbshipit-source-id: 39cd9e818458ac2a91efb175f24a74c8c303ff08 --- React/Base/RCTConvert.m | 6 +++++- .../com/facebook/react/uimanager/LayoutShadowNode.java | 5 +++++ .../main/java/com/facebook/yoga/YogaPositionType.java | 10 ++++++---- ReactCommon/fabric/components/view/conversions.h | 6 ++++++ ReactCommon/yoga/yoga/YGEnums.cpp | 2 ++ ReactCommon/yoga/yoga/YGEnums.h | 6 +++++- 6 files changed, 29 insertions(+), 6 deletions(-) diff --git a/React/Base/RCTConvert.m b/React/Base/RCTConvert.m index 3bc072efc79..159414228a2 100644 --- a/React/Base/RCTConvert.m +++ b/React/Base/RCTConvert.m @@ -1119,7 +1119,11 @@ RCT_ENUM_CONVERTER( RCT_ENUM_CONVERTER( YGPositionType, - (@{@"absolute" : @(YGPositionTypeAbsolute), @"relative" : @(YGPositionTypeRelative)}), + (@{ + @"static" : @(YGPositionTypeStatic), + @"absolute" : @(YGPositionTypeAbsolute), + @"relative" : @(YGPositionTypeRelative) + }), YGPositionTypeRelative, intValue) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java index ebafab70780..5c6a7bff7d9 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/LayoutShadowNode.java @@ -779,6 +779,11 @@ public class LayoutShadowNode extends ReactShadowNodeImpl { } switch (position) { + case "static": + { + setPositionType(YogaPositionType.STATIC); + break; + } case "relative": { setPositionType(YogaPositionType.RELATIVE); diff --git a/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.java b/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.java index 00354f5cb22..d61c3244fa2 100644 --- a/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.java +++ b/ReactAndroid/src/main/java/com/facebook/yoga/YogaPositionType.java @@ -8,8 +8,9 @@ package com.facebook.yoga; public enum YogaPositionType { - RELATIVE(0), - ABSOLUTE(1); + STATIC(0), + RELATIVE(1), + ABSOLUTE(2); private final int mIntValue; @@ -23,8 +24,9 @@ public enum YogaPositionType { public static YogaPositionType fromInt(int value) { switch (value) { - case 0: return RELATIVE; - case 1: return ABSOLUTE; + case 0: return STATIC; + case 1: return RELATIVE; + case 2: return ABSOLUTE; default: throw new IllegalArgumentException("Unknown enum value: " + value); } } diff --git a/ReactCommon/fabric/components/view/conversions.h b/ReactCommon/fabric/components/view/conversions.h index 5a3cb1a8cc2..6fbe80f1407 100644 --- a/ReactCommon/fabric/components/view/conversions.h +++ b/ReactCommon/fabric/components/view/conversions.h @@ -276,6 +276,10 @@ inline void fromRawValue(const RawValue &value, YGAlign &result) { inline void fromRawValue(const RawValue &value, YGPositionType &result) { assert(value.hasType()); auto stringValue = (std::string)value; + if (stringValue == "static") { + result = YGPositionTypeStatic; + return; + } if (stringValue == "relative") { result = YGPositionTypeRelative; return; @@ -615,6 +619,8 @@ inline std::string toString(const YGAlign &value) { inline std::string toString(const YGPositionType &value) { switch (value) { + case YGPositionTypeStatic: + return "static"; case YGPositionTypeRelative: return "relative"; case YGPositionTypeAbsolute: diff --git a/ReactCommon/yoga/yoga/YGEnums.cpp b/ReactCommon/yoga/yoga/YGEnums.cpp index 3c1301297b3..c01d3d94b3f 100644 --- a/ReactCommon/yoga/yoga/YGEnums.cpp +++ b/ReactCommon/yoga/yoga/YGEnums.cpp @@ -179,6 +179,8 @@ const char* YGOverflowToString(const YGOverflow value) { const char* YGPositionTypeToString(const YGPositionType value) { switch (value) { + case YGPositionTypeStatic: + return "static"; case YGPositionTypeRelative: return "relative"; case YGPositionTypeAbsolute: diff --git a/ReactCommon/yoga/yoga/YGEnums.h b/ReactCommon/yoga/yoga/YGEnums.h index 4241281d76d..3dc458dcb31 100644 --- a/ReactCommon/yoga/yoga/YGEnums.h +++ b/ReactCommon/yoga/yoga/YGEnums.h @@ -128,7 +128,11 @@ YG_ENUM_SEQ_DECL( YGOverflowHidden, YGOverflowScroll) -YG_ENUM_SEQ_DECL(YGPositionType, YGPositionTypeRelative, YGPositionTypeAbsolute) +YG_ENUM_SEQ_DECL( + YGPositionType, + YGPositionTypeStatic, + YGPositionTypeRelative, + YGPositionTypeAbsolute) YG_ENUM_DECL( YGPrintOptions,