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 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 // Update regions, scrolling may change the clip of a particular region. | 390 // Update regions, scrolling may change the clip of a particular region. |
391 frameView->updateAnnotatedRegions(); | 391 frameView->updateAnnotatedRegions(); |
392 frameView->setNeedsUpdateWidgetPositions(); | 392 frameView->setNeedsUpdateWidgetPositions(); |
393 updateCompositingLayersAfterScroll(); | 393 updateCompositingLayersAfterScroll(); |
394 } | 394 } |
395 | 395 |
396 const LayoutBoxModelObject* paintInvalidationContainer = box().containerForP
aintInvalidation(); | 396 const LayoutBoxModelObject* paintInvalidationContainer = box().containerForP
aintInvalidation(); |
397 // The caret rect needs to be invalidated after scrolling | 397 // The caret rect needs to be invalidated after scrolling |
398 frame->selection().setCaretRectNeedsUpdate(); | 398 frame->selection().setCaretRectNeedsUpdate(); |
399 | 399 |
400 FloatQuad quadForFakeMouseMoveEvent = FloatQuad(layer()->renderer()->previou
sPaintInvalidationRect()); | 400 FloatQuad quadForFakeMouseMoveEvent = FloatQuad(layer()->layoutObject()->pre
viousPaintInvalidationRect()); |
401 | 401 |
402 quadForFakeMouseMoveEvent = paintInvalidationContainer->localToAbsoluteQuad(
quadForFakeMouseMoveEvent); | 402 quadForFakeMouseMoveEvent = paintInvalidationContainer->localToAbsoluteQuad(
quadForFakeMouseMoveEvent); |
403 frame->eventHandler().dispatchFakeMouseMoveEventSoonInQuad(quadForFakeMouseM
oveEvent); | 403 frame->eventHandler().dispatchFakeMouseMoveEventSoonInQuad(quadForFakeMouseM
oveEvent); |
404 | 404 |
405 bool requiresPaintInvalidation = true; | 405 bool requiresPaintInvalidation = true; |
406 | 406 |
407 { | 407 { |
408 // FIXME(420741): Since scrolling depends on compositing state, the scro
ll should be | 408 // FIXME(420741): Since scrolling depends on compositing state, the scro
ll should be |
409 // deferred until after the compositing update. | 409 // deferred until after the compositing update. |
410 DisableCompositingQueryAsserts disabler; | 410 DisableCompositingQueryAsserts disabler; |
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
896 | 896 |
897 ASSERT_NOT_REACHED(); | 897 ASSERT_NOT_REACHED(); |
898 return IntSize(); | 898 return IntSize(); |
899 } | 899 } |
900 | 900 |
901 static inline LayoutObject* rendererForScrollbar(LayoutObject& renderer) | 901 static inline LayoutObject* rendererForScrollbar(LayoutObject& renderer) |
902 { | 902 { |
903 if (Node* node = renderer.node()) { | 903 if (Node* node = renderer.node()) { |
904 if (ShadowRoot* shadowRoot = node->containingShadowRoot()) { | 904 if (ShadowRoot* shadowRoot = node->containingShadowRoot()) { |
905 if (shadowRoot->type() == ShadowRoot::ClosedShadowRoot) | 905 if (shadowRoot->type() == ShadowRoot::ClosedShadowRoot) |
906 return shadowRoot->host()->renderer(); | 906 return shadowRoot->host()->layoutObject(); |
907 } | 907 } |
908 } | 908 } |
909 | 909 |
910 return &renderer; | 910 return &renderer; |
911 } | 911 } |
912 | 912 |
913 PassRefPtrWillBeRawPtr<Scrollbar> LayerScrollableArea::createScrollbar(Scrollbar
Orientation orientation) | 913 PassRefPtrWillBeRawPtr<Scrollbar> LayerScrollableArea::createScrollbar(Scrollbar
Orientation orientation) |
914 { | 914 { |
915 RefPtrWillBeRawPtr<Scrollbar> widget = nullptr; | 915 RefPtrWillBeRawPtr<Scrollbar> widget = nullptr; |
916 LayoutObject* actualRenderer = rendererForScrollbar(box()); | 916 LayoutObject* actualRenderer = rendererForScrollbar(box()); |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1306 if (!frame) | 1306 if (!frame) |
1307 return; | 1307 return; |
1308 | 1308 |
1309 FrameView* frameView = frame->view(); | 1309 FrameView* frameView = frame->view(); |
1310 if (!frameView) | 1310 if (!frameView) |
1311 return; | 1311 return; |
1312 | 1312 |
1313 // FIXME: Does this need to be fixed later for OOPI? | 1313 // FIXME: Does this need to be fixed later for OOPI? |
1314 bool isVisibleToHitTest = box().visibleToHitTesting(); | 1314 bool isVisibleToHitTest = box().visibleToHitTesting(); |
1315 if (HTMLFrameOwnerElement* owner = frame->deprecatedLocalOwner()) | 1315 if (HTMLFrameOwnerElement* owner = frame->deprecatedLocalOwner()) |
1316 isVisibleToHitTest &= owner->renderer() && owner->renderer()->visibleToH
itTesting(); | 1316 isVisibleToHitTest &= owner->layoutObject() && owner->layoutObject()->vi
sibleToHitTesting(); |
1317 | 1317 |
1318 bool didScrollOverflow = m_scrollsOverflow; | 1318 bool didScrollOverflow = m_scrollsOverflow; |
1319 | 1319 |
1320 m_scrollsOverflow = hasOverflow && isVisibleToHitTest; | 1320 m_scrollsOverflow = hasOverflow && isVisibleToHitTest; |
1321 if (didScrollOverflow == scrollsOverflow()) | 1321 if (didScrollOverflow == scrollsOverflow()) |
1322 return; | 1322 return; |
1323 | 1323 |
1324 if (m_scrollsOverflow) { | 1324 if (m_scrollsOverflow) { |
1325 ASSERT(canHaveOverflowScrollbars(box())); | 1325 ASSERT(canHaveOverflowScrollbars(box())); |
1326 frameView->addScrollableArea(this); | 1326 frameView->addScrollableArea(this); |
(...skipping 29 matching lines...) Expand all Loading... |
1356 } | 1356 } |
1357 | 1357 |
1358 static bool layerNeedsCompositedScrolling(LayerScrollableArea::LCDTextMode mode,
const Layer* layer) | 1358 static bool layerNeedsCompositedScrolling(LayerScrollableArea::LCDTextMode mode,
const Layer* layer) |
1359 { | 1359 { |
1360 if (mode == LayerScrollableArea::ConsiderLCDText && !layer->compositor()->pr
eferCompositingToLCDTextEnabled()) | 1360 if (mode == LayerScrollableArea::ConsiderLCDText && !layer->compositor()->pr
eferCompositingToLCDTextEnabled()) |
1361 return false; | 1361 return false; |
1362 | 1362 |
1363 return layer->scrollsOverflow() | 1363 return layer->scrollsOverflow() |
1364 && !layer->hasDescendantWithClipPath() | 1364 && !layer->hasDescendantWithClipPath() |
1365 && !layer->hasAncestorWithClipPath() | 1365 && !layer->hasAncestorWithClipPath() |
1366 && !layer->renderer()->style()->hasBorderRadius(); | 1366 && !layer->layoutObject()->style()->hasBorderRadius(); |
1367 } | 1367 } |
1368 | 1368 |
1369 void LayerScrollableArea::updateNeedsCompositedScrolling(LCDTextMode mode) | 1369 void LayerScrollableArea::updateNeedsCompositedScrolling(LCDTextMode mode) |
1370 { | 1370 { |
1371 const bool needsCompositedScrolling = layerNeedsCompositedScrolling(mode, la
yer()); | 1371 const bool needsCompositedScrolling = layerNeedsCompositedScrolling(mode, la
yer()); |
1372 if (static_cast<bool>(m_needsCompositedScrolling) != needsCompositedScrollin
g) { | 1372 if (static_cast<bool>(m_needsCompositedScrolling) != needsCompositedScrollin
g) { |
1373 m_needsCompositedScrolling = needsCompositedScrolling; | 1373 m_needsCompositedScrolling = needsCompositedScrolling; |
1374 layer()->didUpdateNeedsCompositedScrolling(); | 1374 layer()->didUpdateNeedsCompositedScrolling(); |
1375 } | 1375 } |
1376 } | 1376 } |
1377 | 1377 |
1378 void LayerScrollableArea::setTopmostScrollChild(Layer* scrollChild) | 1378 void LayerScrollableArea::setTopmostScrollChild(Layer* scrollChild) |
1379 { | 1379 { |
1380 // We only want to track the topmost scroll child for scrollable areas with | 1380 // We only want to track the topmost scroll child for scrollable areas with |
1381 // overlay scrollbars. | 1381 // overlay scrollbars. |
1382 if (!hasOverlayScrollbars()) | 1382 if (!hasOverlayScrollbars()) |
1383 return; | 1383 return; |
1384 m_nextTopmostScrollChild = scrollChild; | 1384 m_nextTopmostScrollChild = scrollChild; |
1385 } | 1385 } |
1386 | 1386 |
1387 } // namespace blink | 1387 } // namespace blink |
OLD | NEW |