IntPoint ScrollableArea::nearestActiveSnapPoint(const IntPoint& currentPosition) { if (!horizontalSnapOffsets() && !verticalSnapOffsets()) return currentPosition; if (!existingScrollAnimator()) return currentPosition; IntPoint correctedPosition = currentPosition; if (horizontalSnapOffsets()) { const auto& horizontal = *horizontalSnapOffsets(); size_t activeIndex = currentHorizontalSnapPointIndex(); if (activeIndex < horizontal.size()) correctedPosition.setX(horizontal[activeIndex].toInt()); } if (verticalSnapOffsets()) { const auto& vertical = *verticalSnapOffsets(); size_t activeIndex = currentVerticalSnapPointIndex(); if (activeIndex < vertical.size()) correctedPosition.setY(vertical[activeIndex].toInt()); } return correctedPosition; }
void ScrollableArea::serviceScrollAnimations(double monotonicTime) { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->serviceScrollAnimations(); if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator()) programmaticScrollAnimator->tickAnimation(monotonicTime); }
void ScrollableArea::willEndLiveResize() { if (!m_inLiveResize) return; m_inLiveResize = false; if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->willEndLiveResize(); }
void ScrollableArea::willStartLiveResize() { if (m_inLiveResize) return; m_inLiveResize = true; if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->willStartLiveResize(); }
void ScrollableArea::setScrollbarOverlayStyle(ScrollbarOverlayStyle overlayStyle) { m_scrollbarOverlayStyle = overlayStyle; if (horizontalScrollbar()) { ScrollbarTheme::theme()->updateScrollbarOverlayStyle(*horizontalScrollbar()); horizontalScrollbar()->invalidate(); if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->invalidateScrollbarPartLayers(horizontalScrollbar()); } if (verticalScrollbar()) { ScrollbarTheme::theme()->updateScrollbarOverlayStyle(*verticalScrollbar()); verticalScrollbar()->invalidate(); if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->invalidateScrollbarPartLayers(verticalScrollbar()); } }
void ScrollableArea::updateScrollSnapState() { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->updateScrollSnapState(); if (isScrollSnapInProgress()) return; IntPoint currentPosition = scrollPosition(); IntPoint correctedPosition = nearestActiveSnapPoint(currentPosition); if (correctedPosition != currentPosition) scrollToOffsetWithoutAnimation(correctedPosition); }
void ScrollableArea::serviceScrollAnimations(double monotonicTime) { bool hasRunningAnimation = false; if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) { scrollAnimator->serviceScrollAnimations(); if (scrollAnimator->hasRunningAnimation()) hasRunningAnimation = true; } if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator()) { programmaticScrollAnimator->tickAnimation(monotonicTime); if (programmaticScrollAnimator->hasRunningAnimation()) hasRunningAnimation = true; } if (!hasRunningAnimation) deregisterForAnimation(); }
void ScrollableArea::serviceScrollAnimations(double monotonicTime) { bool requiresAnimationService = false; if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) { scrollAnimator->serviceScrollAnimations(); if (scrollAnimator->hasRunningAnimation()) requiresAnimationService = true; } if (ProgrammaticScrollAnimator* programmaticScrollAnimator = existingProgrammaticScrollAnimator()) { programmaticScrollAnimator->tickAnimation(monotonicTime); if (programmaticScrollAnimator->hasAnimationThatRequiresService()) requiresAnimationService = true; } if (!requiresAnimationService) deregisterForAnimation(); }
void ScrollableArea::serviceScrollAnimations() { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->serviceScrollAnimations(); }
void ScrollableArea::finishCurrentScrollAnimations() const { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->finishCurrentScrollAnimations(); }
void ScrollableArea::contentsResized() { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->contentsResized(); }
void ScrollableArea::mouseMovedInContentArea() const { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->mouseMovedInContentArea(); }
void ScrollableArea::contentAreaDidHide() const { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->contentAreaDidHide(); }
void ScrollableArea::contentAreaWillPaint() const { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->contentAreaWillPaint(); }
void ScrollableArea::mouseExitedContentArea() const { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->mouseEnteredContentArea(); }
void ScrollableArea::availableContentSizeChanged(AvailableSizeChangeReason) { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->contentsResized(); // This flashes overlay scrollbars. }
void ScrollableArea::lockOverlayScrollbarStateToHidden(bool shouldLockState) const { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->lockOverlayScrollbarStateToHidden(shouldLockState); }
void ScrollableArea::cancelScrollAnimation() { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->cancelAnimations(); }
void ScrollableArea::programmaticallyScrollSmoothlyToOffset(const FloatPoint& offset) { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) scrollAnimator->cancelAnimations(); programmaticScrollAnimator()->animateToOffset(offset); }
bool ScrollableArea::scrollbarsCanBeActive() const { if (ScrollAnimator* scrollAnimator = existingScrollAnimator()) return scrollAnimator->scrollbarsCanBeActive(); return true; }