void RootFrameViewport::setScrollOffset(const ScrollOffset& offset, ScrollType scrollType, ScrollBehavior scrollBehavior) { updateScrollAnimator(); if (scrollBehavior == ScrollBehaviorAuto) scrollBehavior = scrollBehaviorStyle(); if (scrollType == ProgrammaticScroll && !layoutViewport().isProgrammaticallyScrollable()) return; if (scrollType == AnchoringScroll) { distributeScrollBetweenViewports(offset, scrollType, scrollBehavior, LayoutViewport); return; } if (scrollBehavior == ScrollBehaviorSmooth) { distributeScrollBetweenViewports(offset, scrollType, scrollBehavior, VisualViewport); return; } ScrollOffset clampedOffset = clampScrollOffset(offset); ScrollableArea::setScrollOffset(clampedOffset, scrollType, scrollBehavior); }
void ScrollableArea::setScrollPosition(const DoublePoint& position, ScrollType scrollType, ScrollBehavior behavior) { if (behavior == ScrollBehaviorAuto) behavior = scrollBehaviorStyle(); if (scrollType == CompositorScroll) scrollPositionChanged(clampScrollPosition(position), CompositorScroll); else if (scrollType == ProgrammaticScroll) programmaticScrollHelper(position, behavior); else if (scrollType == UserScroll) userScrollHelper(position, behavior); else ASSERT_NOT_REACHED(); }
void RootFrameViewport::setScrollPosition(const DoublePoint& position, ScrollType scrollType, ScrollBehavior scrollBehavior) { updateScrollAnimator(); // TODO(bokan): Support smooth scrolling the visual viewport. if (scrollBehavior == ScrollBehaviorAuto) scrollBehavior = scrollBehaviorStyle(); if (scrollBehavior == ScrollBehaviorSmooth) { layoutViewport().setScrollPosition(position, scrollType, scrollBehavior); return; } if (scrollType == ProgrammaticScroll && !layoutViewport().isProgrammaticallyScrollable()) return; DoublePoint clampedPosition = clampScrollPosition(position); ScrollableArea::setScrollPosition(clampedPosition, scrollType, scrollBehavior); }
void RootFrameViewport::setScrollPosition(const DoublePoint& position, ScrollType scrollType, ScrollBehavior scrollBehavior) { updateScrollAnimator(); if (scrollBehavior == ScrollBehaviorAuto) scrollBehavior = scrollBehaviorStyle(); if (scrollType == ProgrammaticScroll && !layoutViewport().isProgrammaticallyScrollable()) return; if (scrollBehavior == ScrollBehaviorSmooth) { distributeScrollBetweenViewports(position, scrollType, scrollBehavior); return; } DoublePoint clampedPosition = clampScrollPosition(position); ScrollableArea::setScrollPosition(clampedPosition, scrollType, scrollBehavior); }