diff --git a/ReactCommon/fabric/components/view/ConcreteViewShadowNode.h b/ReactCommon/fabric/components/view/ConcreteViewShadowNode.h index 6c5e15a7786..fbe6d32dcad 100644 --- a/ReactCommon/fabric/components/view/ConcreteViewShadowNode.h +++ b/ReactCommon/fabric/components/view/ConcreteViewShadowNode.h @@ -58,8 +58,6 @@ class ConcreteViewShadowNode : public ConcreteShadowNode< static ShadowNodeTraits BaseTraits() { auto traits = BaseShadowNode::BaseTraits(); - traits.set(ShadowNodeTraits::Trait::LayoutableKind); - traits.set(ShadowNodeTraits::Trait::YogaLayoutableKind); traits.set(ShadowNodeTraits::Trait::ViewKind); return traits; } diff --git a/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.cpp b/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.cpp index 2f200b4952c..c64caf9ff1d 100644 --- a/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.cpp +++ b/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.cpp @@ -21,6 +21,12 @@ namespace facebook { namespace react { +ShadowNodeTraits YogaLayoutableShadowNode::BaseTraits() { + auto traits = LayoutableShadowNode::BaseTraits(); + traits.set(ShadowNodeTraits::Trait::YogaLayoutableKind); + return traits; +} + YogaLayoutableShadowNode::YogaLayoutableShadowNode( ShadowNodeFragment const &fragment, ShadowNodeFamily::Shared const &family, diff --git a/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.h b/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.h index 18859e0a2d4..4ed1d7c7db3 100644 --- a/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.h +++ b/ReactCommon/fabric/components/view/yoga/YogaLayoutableShadowNode.h @@ -28,6 +28,8 @@ class YogaLayoutableShadowNode : public LayoutableShadowNode { YogaLayoutableShadowNode *, kShadowNodeChildrenSmallVectorSize>; + static ShadowNodeTraits BaseTraits(); + #pragma mark - Constructors YogaLayoutableShadowNode( diff --git a/ReactCommon/fabric/core/layout/LayoutableShadowNode.cpp b/ReactCommon/fabric/core/layout/LayoutableShadowNode.cpp index 0e68e6570d8..1ad98216873 100644 --- a/ReactCommon/fabric/core/layout/LayoutableShadowNode.cpp +++ b/ReactCommon/fabric/core/layout/LayoutableShadowNode.cpp @@ -81,6 +81,12 @@ LayoutableShadowNode::LayoutableShadowNode( layoutMetrics_(static_cast(sourceShadowNode) .layoutMetrics_) {} +ShadowNodeTraits LayoutableShadowNode::BaseTraits() { + auto traits = ShadowNodeTraits{}; + traits.set(ShadowNodeTraits::Trait::LayoutableKind); + return traits; +} + LayoutMetrics LayoutableShadowNode::getLayoutMetrics() const { return layoutMetrics_; } diff --git a/ReactCommon/fabric/core/layout/LayoutableShadowNode.h b/ReactCommon/fabric/core/layout/LayoutableShadowNode.h index 8751a2de0ba..725fe1ff59c 100644 --- a/ReactCommon/fabric/core/layout/LayoutableShadowNode.h +++ b/ReactCommon/fabric/core/layout/LayoutableShadowNode.h @@ -41,6 +41,8 @@ class LayoutableShadowNode : public ShadowNode { ShadowNode const &sourceShadowNode, ShadowNodeFragment const &fragment); + static ShadowNodeTraits BaseTraits(); + class LayoutInspectingPolicy final { public: bool includeTransform{true}; diff --git a/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h b/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h index 2ce67c279fa..2bee6a31896 100644 --- a/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h +++ b/ReactCommon/fabric/core/shadownode/ConcreteShadowNode.h @@ -63,7 +63,7 @@ class ConcreteShadowNode : public BaseShadowNodeT { * Reimplement in subclasses to declare class-specific traits. */ static ShadowNodeTraits BaseTraits() { - return ShadowNodeTraits{}; + return BaseShadowNodeT::BaseTraits(); } static SharedConcreteProps Props( diff --git a/ReactCommon/fabric/core/shadownode/ShadowNode.h b/ReactCommon/fabric/core/shadownode/ShadowNode.h index e4482f469a2..fa62432423b 100644 --- a/ReactCommon/fabric/core/shadownode/ShadowNode.h +++ b/ReactCommon/fabric/core/shadownode/ShadowNode.h @@ -63,6 +63,14 @@ class ShadowNode : public Sealable, public DebugStringConvertible { */ static bool sameFamily(const ShadowNode &first, const ShadowNode &second); + /* + * A set of traits associated with a particular class. + * Reimplement in subclasses to declare class-specific traits. + */ + static ShadowNodeTraits BaseTraits() { + return ShadowNodeTraits{}; + } + #pragma mark - Constructors /*