Deprecate YGNode::setConfig

Summary:
We want to phase out usage of config pointers on nodes. Setting configs is no longer needed, as a config is unly used during construction.

Here we deprecate the setter, as it is no longer working as it used to (e.g. changing `useWebDefaults` after a node is constructed).

Reviewed By: SidharthGuglani

Differential Revision: D15416474

fbshipit-source-id: a2cc06cad0c5148cecce056ece5f141b3defe9a9
This commit is contained in:
David Aurelio
2019-05-29 07:38:12 -07:00
committed by Facebook Github Bot
parent b74c0d4766
commit cea3865c74
3 changed files with 21 additions and 6 deletions

View File

@@ -30,3 +30,15 @@
#define YG_ENUM_BEGIN(name) enum name #define YG_ENUM_BEGIN(name) enum name
#define YG_ENUM_END(name) name #define YG_ENUM_END(name) name
#endif #endif
#ifdef __GNUC__
#define YG_DEPRECATED __attribute__((deprecated))
#elif defined(_MSC_VER)
#define YG_DEPRECATED __declspec(deprecated)
#elif __cplusplus >= 201402L
#if defined(__has_cpp_attribute)
#if __has_cpp_attribute(deprecated)
#define YG_DEPRECATED [[deprecated]]
#endif
#endif
#endif

View File

@@ -11,6 +11,7 @@
#include "YGConfig.h" #include "YGConfig.h"
#include "YGLayout.h" #include "YGLayout.h"
#include "YGStyle.h" #include "YGStyle.h"
#include "YGMacros.h"
#include "Yoga-internal.h" #include "Yoga-internal.h"
YGConfigRef YGConfigGetDefault(); YGConfigRef YGConfigGetDefault();
@@ -272,7 +273,7 @@ public:
// TODO: rvalue override for setChildren // TODO: rvalue override for setChildren
void setConfig(YGConfigRef config) { config_ = config; } YG_DEPRECATED void setConfig(YGConfigRef config) { config_ = config; }
void setDirty(bool isDirty); void setDirty(bool isDirty);
void setLayoutLastOwnerDirection(YGDirection direction); void setLayoutLastOwnerDirection(YGDirection direction);

View File

@@ -253,7 +253,13 @@ static YGConfigRef YGConfigClone(const YGConfig& oldConfig) {
} }
static YGNodeRef YGNodeDeepClone(YGNodeRef oldNode) { static YGNodeRef YGNodeDeepClone(YGNodeRef oldNode) {
YGNodeRef node = YGNodeClone(oldNode); auto config = YGConfigClone(*oldNode->getConfig());
auto node = new YGNode{*oldNode, config};
node->setOwner(nullptr);
#ifdef YG_ENABLE_EVENTS
Event::publish<Event::NodeAllocation>(node, {node->getConfig()});
#endif
YGVector vec = YGVector(); YGVector vec = YGVector();
vec.reserve(oldNode->getChildren().size()); vec.reserve(oldNode->getChildren().size());
YGNodeRef childNode = nullptr; YGNodeRef childNode = nullptr;
@@ -264,10 +270,6 @@ static YGNodeRef YGNodeDeepClone(YGNodeRef oldNode) {
} }
node->setChildren(vec); node->setChildren(vec);
if (oldNode->getConfig() != nullptr) {
node->setConfig(YGConfigClone(*(oldNode->getConfig())));
}
return node; return node;
} }