Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 5 * | 5 * |
| 6 * Other contributors: | 6 * Other contributors: |
| 7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
| 9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 303 void scrollbarVisibilityChanged() override; | 303 void scrollbarVisibilityChanged() override; |
| 304 IntRect scrollableAreaBoundingBox() const override; | 304 IntRect scrollableAreaBoundingBox() const override; |
| 305 void registerForAnimation() override; | 305 void registerForAnimation() override; |
| 306 void deregisterForAnimation() override; | 306 void deregisterForAnimation() override; |
| 307 bool userInputScrollable(ScrollbarOrientation) const override; | 307 bool userInputScrollable(ScrollbarOrientation) const override; |
| 308 bool shouldPlaceVerticalScrollbarOnLeft() const override; | 308 bool shouldPlaceVerticalScrollbarOnLeft() const override; |
| 309 int pageStep(ScrollbarOrientation) const override; | 309 int pageStep(ScrollbarOrientation) const override; |
| 310 ScrollBehavior scrollBehaviorStyle() const override; | 310 ScrollBehavior scrollBehaviorStyle() const override; |
| 311 CompositorAnimationTimeline* compositorAnimationTimeline() const override; | 311 CompositorAnimationTimeline* compositorAnimationTimeline() const override; |
| 312 | 312 |
| 313 double scrollXOffset() const { | |
| 314 return m_scrollOffset.width() + scrollOrigin().x(); | |
| 315 } | |
| 316 double scrollYOffset() const { | |
| 317 return m_scrollOffset.height() + scrollOrigin().y(); | |
| 318 } | |
| 319 | |
| 320 DoubleSize scrollOffset() const { return m_scrollOffset; } | |
| 321 | |
| 322 // FIXME: We shouldn't allow access to m_overflowRect outside this class. | 313 // FIXME: We shouldn't allow access to m_overflowRect outside this class. |
| 323 LayoutRect overflowRect() const { return m_overflowRect; } | 314 LayoutRect overflowRect() const { return m_overflowRect; } |
| 324 | 315 |
| 325 void scrollToPosition(const DoublePoint& scrollPosition, | 316 DoubleSize offsetFromOrigin() const { |
|
bokan
2016/10/01 20:32:47
I find this naming to be confusing, I think what t
szager1
2016/10/02 19:35:28
In discussion with skobes, we had different ideas
| |
| 326 ScrollOffsetClamping = ScrollOffsetUnclamped, | 317 return toDoubleSize(DoublePoint(scrollOrigin())) + m_scrollPosition; |
| 327 ScrollBehavior = ScrollBehaviorInstant, | 318 } |
| 328 ScrollType = ProgrammaticScroll); | 319 void scrollToOffsetFromOrigin( |
| 329 | 320 const DoubleSize& scrollOffset, |
| 330 void scrollToOffset(const DoubleSize& scrollOffset, | 321 ScrollBehavior scrollBehavior = ScrollBehaviorInstant, |
| 331 ScrollOffsetClamping clamp = ScrollOffsetUnclamped, | 322 ScrollType scrollType = ProgrammaticScroll) { |
| 332 ScrollBehavior scrollBehavior = ScrollBehaviorInstant, | 323 setScrollPosition(-scrollOrigin() + scrollOffset, scrollType, |
| 333 ScrollType scrollType = ProgrammaticScroll) { | 324 scrollBehavior); |
| 334 scrollToPosition(-scrollOrigin() + scrollOffset, clamp, scrollBehavior, | |
| 335 scrollType); | |
| 336 } | 325 } |
| 337 | 326 |
| 338 void scrollToXOffset(double x, | 327 // This will set the scroll position without clamping, and it will do all post -update |
| 339 ScrollOffsetClamping clamp = ScrollOffsetUnclamped, | 328 // work even if the scroll position didn't change. |
| 340 ScrollBehavior scrollBehavior = ScrollBehaviorInstant) { | 329 void setScrollPositionUnconditionally(const DoublePoint&, |
| 341 scrollToOffset(DoubleSize(x, scrollYOffset()), clamp, scrollBehavior); | 330 ScrollType = ProgrammaticScroll); |
| 342 } | |
| 343 | |
| 344 void scrollToYOffset(double y, | |
| 345 ScrollOffsetClamping clamp = ScrollOffsetUnclamped, | |
| 346 ScrollBehavior scrollBehavior = ScrollBehaviorInstant) { | |
| 347 scrollToOffset(DoubleSize(scrollXOffset(), y), clamp, scrollBehavior); | |
| 348 } | |
| 349 | |
| 350 void setScrollPosition( | |
| 351 const DoublePoint& position, | |
| 352 ScrollType scrollType, | |
| 353 ScrollBehavior scrollBehavior = ScrollBehaviorInstant) override { | |
| 354 scrollToOffset(toDoubleSize(position), ScrollOffsetClamped, scrollBehavior, | |
| 355 scrollType); | |
| 356 } | |
| 357 | 331 |
| 358 // TODO(szager): Actually run these after all of layout is finished. Currentl y, they | 332 // TODO(szager): Actually run these after all of layout is finished. Currentl y, they |
| 359 // run at the end of box()'es layout (or after all flexbox layout has finished ) but while | 333 // run at the end of box()'es layout (or after all flexbox layout has finished ) but while |
| 360 // document layout is still happening. | 334 // document layout is still happening. |
| 361 void updateAfterLayout(); | 335 void updateAfterLayout(); |
| 362 void clampScrollPositionsAfterLayout(); | 336 void clampScrollPositionsAfterLayout(); |
| 363 | 337 |
| 364 void updateAfterStyleChange(const ComputedStyle*); | 338 void updateAfterStyleChange(const ComputedStyle*); |
| 365 void updateAfterOverflowRecalc(); | 339 void updateAfterOverflowRecalc(); |
| 366 | 340 |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 388 LayoutUnit scrollWidth() const; | 362 LayoutUnit scrollWidth() const; |
| 389 LayoutUnit scrollHeight() const; | 363 LayoutUnit scrollHeight() const; |
| 390 int pixelSnappedScrollWidth() const; | 364 int pixelSnappedScrollWidth() const; |
| 391 int pixelSnappedScrollHeight() const; | 365 int pixelSnappedScrollHeight() const; |
| 392 | 366 |
| 393 int verticalScrollbarWidth( | 367 int verticalScrollbarWidth( |
| 394 OverlayScrollbarClipBehavior = IgnoreOverlayScrollbarSize) const; | 368 OverlayScrollbarClipBehavior = IgnoreOverlayScrollbarSize) const; |
| 395 int horizontalScrollbarHeight( | 369 int horizontalScrollbarHeight( |
| 396 OverlayScrollbarClipBehavior = IgnoreOverlayScrollbarSize) const; | 370 OverlayScrollbarClipBehavior = IgnoreOverlayScrollbarSize) const; |
| 397 | 371 |
| 398 DoubleSize adjustedScrollOffset() const { | |
| 399 return DoubleSize(scrollXOffset(), scrollYOffset()); | |
| 400 } | |
| 401 | |
| 402 void positionOverflowControls(); | 372 void positionOverflowControls(); |
| 403 | 373 |
| 404 // isPointInResizeControl() is used for testing if a pointer/touch position is in the resize control | 374 // isPointInResizeControl() is used for testing if a pointer/touch position is in the resize control |
| 405 // area. | 375 // area. |
| 406 bool isPointInResizeControl(const IntPoint& absolutePoint, | 376 bool isPointInResizeControl(const IntPoint& absolutePoint, |
| 407 ResizerHitTestType) const; | 377 ResizerHitTestType) const; |
| 408 bool hitTestOverflowControls(HitTestResult&, const IntPoint& localPoint); | 378 bool hitTestOverflowControls(HitTestResult&, const IntPoint& localPoint); |
| 409 | 379 |
| 410 bool hitTestResizerInFragments(const PaintLayerFragments&, | 380 bool hitTestResizerInFragments(const PaintLayerFragments&, |
| 411 const HitTestLocation&) const; | 381 const HitTestLocation&) const; |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 519 bool hasVerticalOverflow() const; | 489 bool hasVerticalOverflow() const; |
| 520 bool hasScrollableHorizontalOverflow() const; | 490 bool hasScrollableHorizontalOverflow() const; |
| 521 bool hasScrollableVerticalOverflow() const; | 491 bool hasScrollableVerticalOverflow() const; |
| 522 bool visualViewportSuppliesScrollbars() const; | 492 bool visualViewportSuppliesScrollbars() const; |
| 523 | 493 |
| 524 bool needsScrollbarReconstruction() const; | 494 bool needsScrollbarReconstruction() const; |
| 525 | 495 |
| 526 void updateScrollOrigin(); | 496 void updateScrollOrigin(); |
| 527 void updateScrollDimensions(); | 497 void updateScrollDimensions(); |
| 528 | 498 |
| 529 void setScrollOffset(const DoublePoint&, ScrollType) override; | 499 void updateScrollPosition(const DoublePoint&, ScrollType) override; |
| 530 | 500 |
| 531 int verticalScrollbarStart(int minX, int maxX) const; | 501 int verticalScrollbarStart(int minX, int maxX) const; |
| 532 int horizontalScrollbarStart(int minX) const; | 502 int horizontalScrollbarStart(int minX) const; |
| 533 IntSize scrollbarOffset(const Scrollbar&) const; | 503 IntSize scrollbarOffset(const Scrollbar&) const; |
| 534 | 504 |
| 535 void setHasHorizontalScrollbar(bool hasScrollbar); | 505 void setHasHorizontalScrollbar(bool hasScrollbar); |
| 536 void setHasVerticalScrollbar(bool hasScrollbar); | 506 void setHasVerticalScrollbar(bool hasScrollbar); |
| 537 | 507 |
| 538 void updateScrollCornerStyle(); | 508 void updateScrollCornerStyle(); |
| 539 | 509 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 581 | 551 |
| 582 // The width/height of our scrolled area. | 552 // The width/height of our scrolled area. |
| 583 // This is OverflowModel's layout overflow translated to physical | 553 // This is OverflowModel's layout overflow translated to physical |
| 584 // coordinates. See OverflowModel for the different overflow and | 554 // coordinates. See OverflowModel for the different overflow and |
| 585 // LayoutBoxModelObject for the coordinate systems. | 555 // LayoutBoxModelObject for the coordinate systems. |
| 586 LayoutRect m_overflowRect; | 556 LayoutRect m_overflowRect; |
| 587 | 557 |
| 588 // ScrollbarManager holds the Scrollbar instances. | 558 // ScrollbarManager holds the Scrollbar instances. |
| 589 ScrollbarManager m_scrollbarManager; | 559 ScrollbarManager m_scrollbarManager; |
| 590 | 560 |
| 591 // This is the (scroll) offset from scrollOrigin(). | 561 // This is the absolute scroll position, *not* relative to m_scrollOrigin. |
|
bokan
2016/10/01 20:32:47
Ok, I think I'm missing something. Absolute would
szager1
2016/10/02 19:35:28
Yeah, this is a bad comment; I changed it.
| |
| 592 DoubleSize m_scrollOffset; | 562 DoubleSize m_scrollPosition; |
| 593 | 563 |
| 594 IntPoint m_cachedOverlayScrollbarOffset; | 564 IntPoint m_cachedOverlayScrollbarOffset; |
| 595 | 565 |
| 596 // LayoutObject to hold our custom scroll corner. | 566 // LayoutObject to hold our custom scroll corner. |
| 597 LayoutScrollbarPart* m_scrollCorner; | 567 LayoutScrollbarPart* m_scrollCorner; |
| 598 | 568 |
| 599 // LayoutObject to hold our custom resizer. | 569 // LayoutObject to hold our custom resizer. |
| 600 LayoutScrollbarPart* m_resizer; | 570 LayoutScrollbarPart* m_resizer; |
| 601 | 571 |
| 602 ScrollAnchor m_scrollAnchor; | 572 ScrollAnchor m_scrollAnchor; |
| 603 | 573 |
| 604 std::unique_ptr<PaintLayerScrollableAreaRareData> m_rareData; | 574 std::unique_ptr<PaintLayerScrollableAreaRareData> m_rareData; |
| 605 | 575 |
| 606 #if ENABLE(ASSERT) | 576 #if ENABLE(ASSERT) |
| 607 bool m_hasBeenDisposed; | 577 bool m_hasBeenDisposed; |
| 608 #endif | 578 #endif |
| 609 }; | 579 }; |
| 610 | 580 |
| 611 DEFINE_TYPE_CASTS(PaintLayerScrollableArea, | 581 DEFINE_TYPE_CASTS(PaintLayerScrollableArea, |
| 612 ScrollableArea, | 582 ScrollableArea, |
| 613 scrollableArea, | 583 scrollableArea, |
| 614 scrollableArea->isPaintLayerScrollableArea(), | 584 scrollableArea->isPaintLayerScrollableArea(), |
| 615 scrollableArea.isPaintLayerScrollableArea()); | 585 scrollableArea.isPaintLayerScrollableArea()); |
| 616 | 586 |
| 617 } // namespace blink | 587 } // namespace blink |
| 618 | 588 |
| 619 #endif // LayerScrollableArea_h | 589 #endif // LayerScrollableArea_h |
| OLD | NEW |