| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights
reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 #include "platform/scroll/ScrollbarTheme.h" | 69 #include "platform/scroll/ScrollbarTheme.h" |
| 70 #include "public/platform/Platform.h" | 70 #include "public/platform/Platform.h" |
| 71 | 71 |
| 72 namespace WebCore { | 72 namespace WebCore { |
| 73 | 73 |
| 74 const int ResizerControlExpandRatioForTouch = 2; | 74 const int ResizerControlExpandRatioForTouch = 2; |
| 75 | 75 |
| 76 RenderLayerScrollableArea::RenderLayerScrollableArea(RenderBox* box) | 76 RenderLayerScrollableArea::RenderLayerScrollableArea(RenderBox* box) |
| 77 : m_box(box) | 77 : m_box(box) |
| 78 , m_inResizeMode(false) | 78 , m_inResizeMode(false) |
| 79 , m_scrollsOverflow(false) |
| 79 , m_scrollDimensionsDirty(true) | 80 , m_scrollDimensionsDirty(true) |
| 80 , m_inOverflowRelayout(false) | 81 , m_inOverflowRelayout(false) |
| 81 , m_needsCompositedScrolling(false) | 82 , m_needsCompositedScrolling(false) |
| 82 , m_forceNeedsCompositedScrolling(DoNotForceCompositedScrolling) | 83 , m_forceNeedsCompositedScrolling(DoNotForceCompositedScrolling) |
| 83 , m_scrollCorner(0) | 84 , m_scrollCorner(0) |
| 84 , m_resizer(0) | 85 , m_resizer(0) |
| 85 { | 86 { |
| 86 ScrollableArea::setConstrainsScrollingToContentEdge(false); | 87 ScrollableArea::setConstrainsScrollingToContentEdge(false); |
| 87 | 88 |
| 88 Node* node = m_box->node(); | 89 Node* node = m_box->node(); |
| (...skipping 871 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 960 if (m_resizer) | 961 if (m_resizer) |
| 961 m_resizer->setFrameRect(resizerCornerRect(borderBox, ResizerForPointer))
; | 962 m_resizer->setFrameRect(resizerCornerRect(borderBox, ResizerForPointer))
; |
| 962 | 963 |
| 963 // FIXME, this should eventually be removed, once we are certain that compos
ited | 964 // FIXME, this should eventually be removed, once we are certain that compos
ited |
| 964 // controls get correctly positioned on a compositor update. For now, conser
vatively | 965 // controls get correctly positioned on a compositor update. For now, conser
vatively |
| 965 // leaving this unchanged. | 966 // leaving this unchanged. |
| 966 if (m_box->hasCompositedLayerMapping()) | 967 if (m_box->hasCompositedLayerMapping()) |
| 967 m_box->compositedLayerMapping()->positionOverflowControlsLayers(offsetFr
omRoot); | 968 m_box->compositedLayerMapping()->positionOverflowControlsLayers(offsetFr
omRoot); |
| 968 } | 969 } |
| 969 | 970 |
| 970 bool RenderLayerScrollableArea::scrollsOverflow() const | |
| 971 { | |
| 972 if (FrameView* frameView = m_box->view()->frameView()) | |
| 973 return frameView->containsScrollableArea(this); | |
| 974 | |
| 975 return false; | |
| 976 } | |
| 977 | |
| 978 void RenderLayerScrollableArea::updateScrollCornerStyle() | 971 void RenderLayerScrollableArea::updateScrollCornerStyle() |
| 979 { | 972 { |
| 980 if (!m_scrollCorner && !hasScrollbar()) | 973 if (!m_scrollCorner && !hasScrollbar()) |
| 981 return; | 974 return; |
| 982 if (!m_scrollCorner && hasOverlayScrollbars()) | 975 if (!m_scrollCorner && hasOverlayScrollbars()) |
| 983 return; | 976 return; |
| 984 | 977 |
| 985 RenderObject* actualRenderer = rendererForScrollbar(m_box); | 978 RenderObject* actualRenderer = rendererForScrollbar(m_box); |
| 986 RefPtr<RenderStyle> corner = m_box->hasOverflowClip() ? actualRenderer->getU
ncachedPseudoStyle(PseudoStyleRequest(SCROLLBAR_CORNER), actualRenderer->style()
) : PassRefPtr<RenderStyle>(nullptr); | 979 RefPtr<RenderStyle> corner = m_box->hasOverflowClip() ? actualRenderer->getU
ncachedPseudoStyle(PseudoStyleRequest(SCROLLBAR_CORNER), actualRenderer->style()
) : PassRefPtr<RenderStyle>(nullptr); |
| 987 if (corner) { | 980 if (corner) { |
| (...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1408 return; | 1401 return; |
| 1409 | 1402 |
| 1410 FrameView* frameView = frame->view(); | 1403 FrameView* frameView = frame->view(); |
| 1411 if (!frameView) | 1404 if (!frameView) |
| 1412 return; | 1405 return; |
| 1413 | 1406 |
| 1414 bool isVisibleToHitTest = m_box->visibleToHitTesting(); | 1407 bool isVisibleToHitTest = m_box->visibleToHitTesting(); |
| 1415 if (HTMLFrameOwnerElement* owner = frame->ownerElement()) | 1408 if (HTMLFrameOwnerElement* owner = frame->ownerElement()) |
| 1416 isVisibleToHitTest &= owner->renderer() && owner->renderer()->visibleToH
itTesting(); | 1409 isVisibleToHitTest &= owner->renderer() && owner->renderer()->visibleToH
itTesting(); |
| 1417 | 1410 |
| 1418 bool requiresScrollableArea = hasOverflow && isVisibleToHitTest; | 1411 m_scrollsOverflow = hasOverflow && isVisibleToHitTest; |
| 1412 |
| 1419 bool updatedScrollableAreaSet = false; | 1413 bool updatedScrollableAreaSet = false; |
| 1420 if (requiresScrollableArea) { | 1414 if (m_scrollsOverflow) { |
| 1421 if (frameView->addScrollableArea(this)) | 1415 if (frameView->addScrollableArea(this)) |
| 1422 updatedScrollableAreaSet = true; | 1416 updatedScrollableAreaSet = true; |
| 1423 } else { | 1417 } else { |
| 1424 if (frameView->removeScrollableArea(this)) | 1418 if (frameView->removeScrollableArea(this)) |
| 1425 updatedScrollableAreaSet = true; | 1419 updatedScrollableAreaSet = true; |
| 1426 } | 1420 } |
| 1427 | 1421 |
| 1428 if (updatedScrollableAreaSet) { | 1422 if (updatedScrollableAreaSet) { |
| 1429 // We always want composited scrolling if compositor driven accelerated | 1423 // We always want composited scrolling if compositor driven accelerated |
| 1430 // scrolling is enabled. Since we will not update needs composited scrol
ling | 1424 // scrolling is enabled. Since we will not update needs composited scrol
ling |
| 1431 // in this case, we must force our state to update. | 1425 // in this case, we must force our state to update. |
| 1432 RenderLayerCompositor* compositor = m_box->view()->compositor(); | 1426 RenderLayerCompositor* compositor = m_box->view()->compositor(); |
| 1433 if (compositor->acceleratedCompositingForOverflowScrollEnabled()) | 1427 if (compositor->acceleratedCompositingForOverflowScrollEnabled()) |
| 1434 layer()->didUpdateNeedsCompositedScrolling(); | 1428 layer()->didUpdateNeedsCompositedScrolling(); |
| 1435 else if (requiresScrollableArea) | 1429 else if (m_scrollsOverflow) |
| 1436 compositor->setNeedsUpdateCompositingRequirementsState(); | 1430 compositor->setNeedsUpdateCompositingRequirementsState(); |
| 1437 else | 1431 else |
| 1438 setNeedsCompositedScrolling(false); | 1432 setNeedsCompositedScrolling(false); |
| 1439 } | 1433 } |
| 1440 } | 1434 } |
| 1441 | 1435 |
| 1442 void RenderLayerScrollableArea::updateNeedsCompositedScrolling() | 1436 void RenderLayerScrollableArea::updateNeedsCompositedScrolling() |
| 1443 { | 1437 { |
| 1444 TRACE_EVENT0("comp-scroll", "RenderLayer::updateNeedsCompositedScrolling"); | 1438 TRACE_EVENT0("comp-scroll", "RenderLayer::updateNeedsCompositedScrolling"); |
| 1445 RenderLayerCompositor* compositor = m_box->view()->compositor(); | 1439 RenderLayerCompositor* compositor = m_box->view()->compositor(); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1520 void RenderLayerScrollableArea::setForceNeedsCompositedScrolling(ForceNeedsCompo
sitedScrollingMode mode) | 1514 void RenderLayerScrollableArea::setForceNeedsCompositedScrolling(ForceNeedsCompo
sitedScrollingMode mode) |
| 1521 { | 1515 { |
| 1522 if (m_forceNeedsCompositedScrolling == mode) | 1516 if (m_forceNeedsCompositedScrolling == mode) |
| 1523 return; | 1517 return; |
| 1524 | 1518 |
| 1525 m_forceNeedsCompositedScrolling = mode; | 1519 m_forceNeedsCompositedScrolling = mode; |
| 1526 layer()->didUpdateNeedsCompositedScrolling(); | 1520 layer()->didUpdateNeedsCompositedScrolling(); |
| 1527 } | 1521 } |
| 1528 | 1522 |
| 1529 } // Namespace WebCore | 1523 } // Namespace WebCore |
| OLD | NEW |