diff --git a/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h b/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h index 5cf2f960a8a..55f0ad4e9e1 100644 --- a/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h +++ b/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewComponentDescriptor.h @@ -35,10 +35,7 @@ class SafeAreaViewComponentDescriptor final shadowNode->getState()); auto stateData = state->getData(); - if (safeAreaViewShadowNode->alreadyAppliedPadding != stateData.padding) { - safeAreaViewShadowNode->alreadyAppliedPadding = stateData.padding; - layoutableShadowNode->setPadding(stateData.padding); - } + layoutableShadowNode->setPadding(stateData.padding); ConcreteComponentDescriptor::adopt(shadowNode); } diff --git a/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.cpp b/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.cpp index bf750e84f50..a04bea2e5e6 100644 --- a/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.cpp +++ b/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.cpp @@ -12,13 +12,5 @@ namespace react { extern const char SafeAreaViewComponentName[] = "SafeAreaView"; -SafeAreaViewShadowNode::SafeAreaViewShadowNode( - ShadowNode const &sourceShadowNode, - ShadowNodeFragment const &fragment) - : ConcreteViewShadowNode(sourceShadowNode, fragment), - alreadyAppliedPadding( - static_cast(sourceShadowNode) - .alreadyAppliedPadding) {} - } // namespace react } // namespace facebook diff --git a/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.h b/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.h index cbed9509ed7..1bd4e47e62e 100644 --- a/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.h +++ b/ReactCommon/react/renderer/components/safeareaview/SafeAreaViewShadowNode.h @@ -26,13 +26,6 @@ class SafeAreaViewShadowNode final : public ConcreteViewShadowNode< ViewEventEmitter, SafeAreaViewState> { using ConcreteViewShadowNode::ConcreteViewShadowNode; - - public: - EdgeInsets alreadyAppliedPadding{}; - - SafeAreaViewShadowNode( - ShadowNode const &sourceShadowNode, - ShadowNodeFragment const &fragment); }; } // namespace react diff --git a/ReactCommon/react/renderer/components/view/yoga/YogaLayoutableShadowNode.cpp b/ReactCommon/react/renderer/components/view/yoga/YogaLayoutableShadowNode.cpp index b1bf74c1f33..0215a0e2e5a 100644 --- a/ReactCommon/react/renderer/components/view/yoga/YogaLayoutableShadowNode.cpp +++ b/ReactCommon/react/renderer/components/view/yoga/YogaLayoutableShadowNode.cpp @@ -285,12 +285,23 @@ void YogaLayoutableShadowNode::setPadding(RectangleEdges padding) const { ensureUnsealed(); auto style = yogaNode_.getStyle(); - style.padding()[YGEdgeTop] = yogaStyleValueFromFloat(padding.top); - style.padding()[YGEdgeLeft] = yogaStyleValueFromFloat(padding.left); - style.padding()[YGEdgeRight] = yogaStyleValueFromFloat(padding.right); - style.padding()[YGEdgeBottom] = yogaStyleValueFromFloat(padding.bottom); - yogaNode_.setStyle(style); - yogaNode_.setDirty(true); + + auto leftPadding = yogaStyleValueFromFloat(padding.left); + auto topPadding = yogaStyleValueFromFloat(padding.top); + auto rightPadding = yogaStyleValueFromFloat(padding.right); + auto bottomPadding = yogaStyleValueFromFloat(padding.bottom); + + if (leftPadding != style.padding()[YGEdgeLeft] || + topPadding != style.padding()[YGEdgeTop] || + rightPadding != style.padding()[YGEdgeRight] || + bottomPadding != style.padding()[YGEdgeBottom]) { + style.padding()[YGEdgeTop] = yogaStyleValueFromFloat(padding.top); + style.padding()[YGEdgeLeft] = yogaStyleValueFromFloat(padding.left); + style.padding()[YGEdgeRight] = yogaStyleValueFromFloat(padding.right); + style.padding()[YGEdgeBottom] = yogaStyleValueFromFloat(padding.bottom); + yogaNode_.setStyle(style); + yogaNode_.setDirty(true); + } } void YogaLayoutableShadowNode::setPositionType(