void ScrollingTreeScrollingNode::updateBeforeChildren(ScrollingStateNode* stateNode) { ScrollingStateScrollingNode* state = toScrollingStateScrollingNode(stateNode); if (state->hasChangedProperty(ScrollingStateScrollingNode::ViewportRect)) m_viewportRect = state->viewportRect(); if (state->hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize)) { if (scrollingTree().isRubberBandInProgress()) m_totalContentsSizeForRubberBand = m_totalContentsSize; else m_totalContentsSizeForRubberBand = state->totalContentsSize(); m_totalContentsSize = state->totalContentsSize(); } if (state->hasChangedProperty(ScrollingStateScrollingNode::FrameScaleFactor)) m_frameScaleFactor = state->frameScaleFactor(); if (state->hasChangedProperty(ScrollingStateScrollingNode::ShouldUpdateScrollLayerPositionOnMainThread)) m_shouldUpdateScrollLayerPositionOnMainThread = state->shouldUpdateScrollLayerPositionOnMainThread(); if (state->hasChangedProperty(ScrollingStateScrollingNode::HorizontalScrollElasticity)) m_horizontalScrollElasticity = state->horizontalScrollElasticity(); if (state->hasChangedProperty(ScrollingStateScrollingNode::VerticalScrollElasticity)) m_verticalScrollElasticity = state->verticalScrollElasticity(); if (state->hasChangedProperty(ScrollingStateScrollingNode::HasEnabledHorizontalScrollbar)) m_hasEnabledHorizontalScrollbar = state->hasEnabledHorizontalScrollbar(); if (state->hasChangedProperty(ScrollingStateScrollingNode::HasEnabledVerticalScrollbar)) m_hasEnabledVerticalScrollbar = state->hasEnabledVerticalScrollbar(); if (state->hasChangedProperty(ScrollingStateScrollingNode::HorizontalScrollbarMode)) m_horizontalScrollbarMode = state->horizontalScrollbarMode(); if (state->hasChangedProperty(ScrollingStateScrollingNode::VerticalScrollbarMode)) m_verticalScrollbarMode = state->verticalScrollbarMode(); if (state->hasChangedProperty(ScrollingStateScrollingNode::ScrollOrigin)) m_scrollOrigin = state->scrollOrigin(); if (state->hasChangedProperty(ScrollingStateScrollingNode::HeaderHeight)) m_headerHeight = state->headerHeight(); if (state->hasChangedProperty(ScrollingStateScrollingNode::FooterHeight)) m_footerHeight = state->footerHeight(); if (state->hasChangedProperty(ScrollingStateScrollingNode::BehaviorForFixedElements)) m_behaviorForFixed = state->scrollBehaviorForFixedElements(); }
void ScrollingTreeScrollingNode::commitStateBeforeChildren(const ScrollingStateNode& stateNode) { const ScrollingStateScrollingNode& state = downcast<ScrollingStateScrollingNode>(stateNode); if (state.hasChangedProperty(ScrollingStateScrollingNode::ScrollableAreaSize)) m_scrollableAreaSize = state.scrollableAreaSize(); if (state.hasChangedProperty(ScrollingStateScrollingNode::TotalContentsSize)) { if (scrollingTree().isRubberBandInProgress()) m_totalContentsSizeForRubberBand = m_totalContentsSize; else m_totalContentsSizeForRubberBand = state.totalContentsSize(); m_totalContentsSize = state.totalContentsSize(); } if (state.hasChangedProperty(ScrollingStateScrollingNode::ReachableContentsSize)) m_reachableContentsSize = state.reachableContentsSize(); if (state.hasChangedProperty(ScrollingStateScrollingNode::ScrollPosition)) m_lastCommittedScrollPosition = state.scrollPosition(); if (state.hasChangedProperty(ScrollingStateScrollingNode::ScrollOrigin)) m_scrollOrigin = state.scrollOrigin(); #if ENABLE(CSS_SCROLL_SNAP) if (state.hasChangedProperty(ScrollingStateScrollingNode::HorizontalSnapOffsets)) m_horizontalSnapOffsets = state.horizontalSnapOffsets(); if (state.hasChangedProperty(ScrollingStateScrollingNode::VerticalSnapOffsets)) m_verticalSnapOffsets = state.verticalSnapOffsets(); if (state.hasChangedProperty(ScrollingStateScrollingNode::CurrentHorizontalSnapOffsetIndex)) m_currentHorizontalSnapPointIndex = state.currentHorizontalSnapPointIndex(); if (state.hasChangedProperty(ScrollingStateScrollingNode::CurrentVerticalSnapOffsetIndex)) m_currentVerticalSnapPointIndex = state.currentVerticalSnapPointIndex(); #endif if (state.hasChangedProperty(ScrollingStateScrollingNode::ScrollableAreaParams)) m_scrollableAreaParameters = state.scrollableAreaParameters(); }
void ScrollingTreeScrollingNode::commitStateAfterChildren(const ScrollingStateNode& stateNode) { const ScrollingStateScrollingNode& scrollingStateNode = downcast<ScrollingStateScrollingNode>(stateNode); if (scrollingStateNode.hasChangedProperty(ScrollingStateScrollingNode::RequestedScrollPosition)) scrollingTree().scrollingTreeNodeRequestsScroll(scrollingNodeID(), scrollingStateNode.requestedScrollPosition(), scrollingStateNode.requestedScrollPositionRepresentsProgrammaticScroll()); }
void ScrollingTreeScrollingNode::setScrollPositionWithoutContentEdgeConstraints(const FloatPoint& scrollPosition) { setScrollLayerPosition(scrollPosition, { }); scrollingTree().scrollingTreeNodeDidScroll(scrollingNodeID(), scrollPosition, Nullopt); }
bool AsyncScrollingCoordinator::isScrollSnapInProgress() const { return scrollingTree()->isScrollSnapInProgress(); }
void AsyncScrollingCoordinator::setScrollPinningBehavior(ScrollPinningBehavior pinning) { scrollingTree()->setScrollPinningBehavior(pinning); }
bool AsyncScrollingCoordinator::isRubberBandInProgress() const { return scrollingTree()->isRubberBandInProgress(); }