MCPcopy Create free account
hub / github.com/Snapchat/Valdi / setScrollContentOffset

Method setScrollContentOffset

valdi/src/valdi/runtime/Context/ViewNode.cpp:841–888  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

839 } else if (_scaleY > 0.0f && _scaleY != 1.0f) {
840 clipRect.y /= _scaleY;
841 clipRect.height /= _scaleY;
842 }
843
844 if (_scrollState != nullptr) {
845 _scrollState->resolveClipRect(clipRect);
846 }
847 }
848 }
849
850 changed = setVisibleInViewport(visibleInViewport);
851
852 if (changed) {
853 if (shouldReceiveVisibilityUpdates()) {
854 auto* visibilityObserver = _viewNodeTree->getViewNodesVisibilityObserver();
855 if (visibilityObserver != nullptr) {
856 visibilityObserver->onViewNodeVisibilityChanged(_rawId, visibleInViewport);
857 }
858 }
859 }
860
861 if (clipRect != getCalculatedViewport()) {
862 setCalculatedViewport(clipRect);
863 // if the viewport changed, we need to re-calculate all viewports for the children.
864 childrenNeedsUpdate = true;
865 viewportChanged = true;
866 changed = true;
867
868 if (shouldReceiveVisibilityUpdates()) {
869 auto* visibilityObserver = _viewNodeTree->getViewNodesVisibilityObserver();
870 if (visibilityObserver != nullptr) {
871 visibilityObserver->onViewNodeViewportChanged(_rawId, clipRect);
872 }
873 }
874 }
875 }
876
877 if (childrenNeedsUpdate) {
878 auto isVisible = isVisibleInViewport();
879
880 if (_childrenIndexer != nullptr) {
881 // Use our childrenIndexer if we have one, which will efficiently find the elements which
882 // have become visible or invisible
883 auto result = _childrenIndexer->findChildrenVisibility(getCalculatedViewport());
884 for (auto* childViewNode : *result.invisibleChildren) {
885 changed |=
886 childViewNode->doUpdateVisibility(getCalculatedViewport(), viewportChanged, false, visitedNodes);
887 }
888 for (auto* childViewNode : *result.visibleChildren) {
889 changed |= childViewNode->doUpdateVisibility(
890 getCalculatedViewport(), viewportChanged, isVisible, visitedNodes);
891 }

Callers 4

TEST_PFunction · 0.80
TESTFunction · 0.80
bindMethod · 0.80

Calls 7

getCircularRatioMethod · 0.80
isCurrentlyAnimatingMethod · 0.80
setCurrentlyAnimatingMethod · 0.80
setNeedsSyncWithViewMethod · 0.80
PointClass · 0.50

Tested by 2

TEST_PFunction · 0.64
TESTFunction · 0.64