diff --git a/cpp/react/renderer/components/SLContainerSpec/SLContainerShadowNode.cpp b/cpp/react/renderer/components/SLContainerSpec/SLContainerShadowNode.cpp index f7323f7..e723974 100644 --- a/cpp/react/renderer/components/SLContainerSpec/SLContainerShadowNode.cpp +++ b/cpp/react/renderer/components/SLContainerSpec/SLContainerShadowNode.cpp @@ -1,5 +1,4 @@ #include "SLContainerShadowNode.h" -#include #define MEASURE_CHILDREN(childrenMeasurements, childNodeMetrics, isHorizontal) \ if (isHorizontal) { \ @@ -66,6 +65,7 @@ SLFenwickTree SLContainerShadowNode::calculateChildrenMeasurements(const Concret Point SLContainerShadowNode::calculateScrollPosition(const ConcreteStateData prevStateData, const ConcreteStateData nextStateData) { auto &props = getConcreteProps(); + bool isFirstRender = prevStateData.childrenMeasurements.size() == 0 && nextStateData.childrenMeasurements.size() > 0; float verticalPosition; float horizontalPosition; @@ -95,6 +95,10 @@ Point SLContainerShadowNode::calculateScrollPosition(const ConcreteStateData pre horizontalPosition = nextStateData.scrollContent.width - prevStateData.scrollContent.width + nextStateData.scrollPosition.x; } verticalPosition = 0; + + if (isFirstRender) { + horizontalPosition = 0; + } } else { horizontalPosition = 0; @@ -103,6 +107,10 @@ Point SLContainerShadowNode::calculateScrollPosition(const ConcreteStateData pre } else { verticalPosition = nextStateData.scrollContent.height - prevStateData.scrollContent.height + nextStateData.scrollPosition.y; } + + if (isFirstRender) { + verticalPosition = 0; + } } }