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 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 | 348 |
349 LocalFrame* frame = box().frame(); | 349 LocalFrame* frame = box().frame(); |
350 ASSERT(frame); | 350 ASSERT(frame); |
351 | 351 |
352 RefPtr<FrameView> frameView = box().frameView(); | 352 RefPtr<FrameView> frameView = box().frameView(); |
353 | 353 |
354 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ScrollLayer",
"data", InspectorScrollLayerEvent::data(&box())); | 354 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "ScrollLayer",
"data", InspectorScrollLayerEvent::data(&box())); |
355 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli
ne migrates to tracing. | 355 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli
ne migrates to tracing. |
356 InspectorInstrumentation::willScrollLayer(&box()); | 356 InspectorInstrumentation::willScrollLayer(&box()); |
357 | 357 |
| 358 const RenderLayerModelObject* repaintContainer = box().containerForPaintInva
lidation(); |
| 359 |
358 // Update the positions of our child layers (if needed as only fixed layers
should be impacted by a scroll). | 360 // Update the positions of our child layers (if needed as only fixed layers
should be impacted by a scroll). |
359 // We don't update compositing layers, because we need to do a deep update f
rom the compositing ancestor. | 361 // We don't update compositing layers, because we need to do a deep update f
rom the compositing ancestor. |
360 if (!frameView->isInPerformLayout()) { | 362 if (!frameView->isInPerformLayout()) { |
361 // If we're in the middle of layout, we'll just update layers once layou
t has finished. | 363 // If we're in the middle of layout, we'll just update layers once layou
t has finished. |
362 layer()->updateLayerPositionsAfterOverflowScroll(); | 364 layer()->clipper().clearClipRectsIncludingDescendants(); |
| 365 box().setPreviousPaintInvalidationRect(box().boundsRectForPaintInvalidat
ion(repaintContainer)); |
363 // Update regions, scrolling may change the clip of a particular region. | 366 // Update regions, scrolling may change the clip of a particular region. |
364 frameView->updateAnnotatedRegions(); | 367 frameView->updateAnnotatedRegions(); |
365 // FIXME: We shouldn't call updateWidgetPositions() here since it might
tear down the render tree, | 368 // FIXME: We shouldn't call updateWidgetPositions() here since it might
tear down the render tree, |
366 // for now we just crash to avoid allowing an attacker to use after free
. | 369 // for now we just crash to avoid allowing an attacker to use after free
. |
367 frameView->updateWidgetPositions(); | 370 frameView->updateWidgetPositions(); |
368 RELEASE_ASSERT(frameView->renderView()); | 371 RELEASE_ASSERT(frameView->renderView()); |
369 updateCompositingLayersAfterScroll(); | 372 updateCompositingLayersAfterScroll(); |
370 } | 373 } |
371 | 374 |
372 const RenderLayerModelObject* repaintContainer = box().containerForPaintInva
lidation(); | |
373 // The caret rect needs to be invalidated after scrolling | 375 // The caret rect needs to be invalidated after scrolling |
374 frame->selection().setCaretRectNeedsUpdate(); | 376 frame->selection().setCaretRectNeedsUpdate(); |
375 | 377 |
376 FloatQuad quadForFakeMouseMoveEvent = FloatQuad(layer()->renderer()->previou
sPaintInvalidationRect()); | 378 FloatQuad quadForFakeMouseMoveEvent = FloatQuad(layer()->renderer()->previou
sPaintInvalidationRect()); |
377 | 379 |
378 quadForFakeMouseMoveEvent = repaintContainer->localToAbsoluteQuad(quadForFak
eMouseMoveEvent); | 380 quadForFakeMouseMoveEvent = repaintContainer->localToAbsoluteQuad(quadForFak
eMouseMoveEvent); |
379 frame->eventHandler().dispatchFakeMouseMoveEventSoonInQuad(quadForFakeMouseM
oveEvent); | 381 frame->eventHandler().dispatchFakeMouseMoveEventSoonInQuad(quadForFakeMouseM
oveEvent); |
380 | 382 |
381 bool requiresRepaint = true; | 383 bool requiresRepaint = true; |
382 | 384 |
(...skipping 1076 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1459 void RenderLayerScrollableArea::setTopmostScrollChild(RenderLayer* scrollChild) | 1461 void RenderLayerScrollableArea::setTopmostScrollChild(RenderLayer* scrollChild) |
1460 { | 1462 { |
1461 // We only want to track the topmost scroll child for scrollable areas with | 1463 // We only want to track the topmost scroll child for scrollable areas with |
1462 // overlay scrollbars. | 1464 // overlay scrollbars. |
1463 if (!hasOverlayScrollbars()) | 1465 if (!hasOverlayScrollbars()) |
1464 return; | 1466 return; |
1465 m_nextTopmostScrollChild = scrollChild; | 1467 m_nextTopmostScrollChild = scrollChild; |
1466 } | 1468 } |
1467 | 1469 |
1468 } // namespace blink | 1470 } // namespace blink |
OLD | NEW |