From 39562f604399fc3b10438071dab07a496bb75067 Mon Sep 17 00:00:00 2001 From: Joe Vilches Date: Mon, 23 Oct 2023 12:21:25 -0700 Subject: [PATCH] Add errata supporting changes to position: static (#1434) Summary: Pull Request resolved: https://github.com/facebook/yoga/pull/1434 X-link: https://github.com/facebook/react-native/pull/41130 I will use this errata to gate my changes that actually make position: static behave like the web. We have future plans to make position: relative the default again but users could still have declared certain nodes as position: static, so I think this is needed regardless. Reviewed By: NickGerleman Differential Revision: D50506915 fbshipit-source-id: 3a72743a30710c64b8eecfe8e08e613f46e62112 --- enums.py | 2 ++ java/com/facebook/yoga/YogaErrata.java | 2 ++ javascript/src/generated/YGEnums.ts | 2 ++ yoga/YGEnums.cpp | 2 ++ yoga/YGEnums.h | 1 + yoga/enums/Errata.h | 3 ++- 6 files changed, 11 insertions(+), 1 deletion(-) diff --git a/enums.py b/enums.py index 0c5207b22c..749cb825af 100755 --- a/enums.py +++ b/enums.py @@ -70,6 +70,8 @@ ("StretchFlexBasis", 1 << 0), # Solely uses the flex-direction to determine starting and ending edges ("StartingEndingEdgeFromFlexDirection", 1 << 1), + # Position: static behaves like position: relative within Yoga + ("PositionStaticBehavesLikeRelative", 1 << 2), # Enable all incorrect behavior (preserve compatibility) ("All", 0x7FFFFFFF), # Enable all errata except for "StretchFlexBasis" (Defaults behavior diff --git a/java/com/facebook/yoga/YogaErrata.java b/java/com/facebook/yoga/YogaErrata.java index bafb673337..99f53f5a81 100644 --- a/java/com/facebook/yoga/YogaErrata.java +++ b/java/com/facebook/yoga/YogaErrata.java @@ -13,6 +13,7 @@ public enum YogaErrata { NONE(0), STRETCH_FLEX_BASIS(1), STARTING_ENDING_EDGE_FROM_FLEX_DIRECTION(2), + POSITION_STATIC_BEHAVES_LIKE_RELATIVE(4), ALL(2147483647), CLASSIC(2147483646); @@ -31,6 +32,7 @@ public static YogaErrata fromInt(int value) { case 0: return NONE; case 1: return STRETCH_FLEX_BASIS; case 2: return STARTING_ENDING_EDGE_FROM_FLEX_DIRECTION; + case 4: return POSITION_STATIC_BEHAVES_LIKE_RELATIVE; case 2147483647: return ALL; case 2147483646: return CLASSIC; default: throw new IllegalArgumentException("Unknown enum value: " + value); diff --git a/javascript/src/generated/YGEnums.ts b/javascript/src/generated/YGEnums.ts index 9f771abb03..af4dc5f46f 100644 --- a/javascript/src/generated/YGEnums.ts +++ b/javascript/src/generated/YGEnums.ts @@ -51,6 +51,7 @@ export enum Errata { None = 0, StretchFlexBasis = 1, StartingEndingEdgeFromFlexDirection = 2, + PositionStaticBehavesLikeRelative = 4, All = 2147483647, Classic = 2147483646, } @@ -162,6 +163,7 @@ const constants = { ERRATA_NONE: Errata.None, ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis, ERRATA_STARTING_ENDING_EDGE_FROM_FLEX_DIRECTION: Errata.StartingEndingEdgeFromFlexDirection, + ERRATA_POSITION_STATIC_BEHAVES_LIKE_RELATIVE: Errata.PositionStaticBehavesLikeRelative, ERRATA_ALL: Errata.All, ERRATA_CLASSIC: Errata.Classic, EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis, diff --git a/yoga/YGEnums.cpp b/yoga/YGEnums.cpp index 77e5c80237..04fd7be933 100644 --- a/yoga/YGEnums.cpp +++ b/yoga/YGEnums.cpp @@ -97,6 +97,8 @@ const char* YGErrataToString(const YGErrata value) { return "stretch-flex-basis"; case YGErrataStartingEndingEdgeFromFlexDirection: return "starting-ending-edge-from-flex-direction"; + case YGErrataPositionStaticBehavesLikeRelative: + return "position-static-behaves-like-relative"; case YGErrataAll: return "all"; case YGErrataClassic: diff --git a/yoga/YGEnums.h b/yoga/YGEnums.h index ef09668c81..e1197444db 100644 --- a/yoga/YGEnums.h +++ b/yoga/YGEnums.h @@ -57,6 +57,7 @@ YG_ENUM_DECL( YGErrataNone = 0, YGErrataStretchFlexBasis = 1, YGErrataStartingEndingEdgeFromFlexDirection = 2, + YGErrataPositionStaticBehavesLikeRelative = 4, YGErrataAll = 2147483647, YGErrataClassic = 2147483646) YG_DEFINE_ENUM_FLAG_OPERATORS(YGErrata) diff --git a/yoga/enums/Errata.h b/yoga/enums/Errata.h index 257e7b2409..6a085bf58d 100644 --- a/yoga/enums/Errata.h +++ b/yoga/enums/Errata.h @@ -19,6 +19,7 @@ enum class Errata : uint32_t { None = YGErrataNone, StretchFlexBasis = YGErrataStretchFlexBasis, StartingEndingEdgeFromFlexDirection = YGErrataStartingEndingEdgeFromFlexDirection, + PositionStaticBehavesLikeRelative = YGErrataPositionStaticBehavesLikeRelative, All = YGErrataAll, Classic = YGErrataClassic, }; @@ -27,7 +28,7 @@ YG_DEFINE_ENUM_FLAG_OPERATORS(Errata) template <> constexpr inline int32_t ordinalCount() { - return 5; + return 6; } template <>