Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(912)

Unified Diff: Source/core/rendering/RenderBlock.cpp

Issue 285103003: [RAL] Make sure RenderLayers are invalidated when moved. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/RenderBlock.cpp
diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp
index a95ad9ee2a5fb8d4cc81f71a43687feab0881aa4..0f7aa6254f44206346c55c06f55b142b38ca35cd 100644
--- a/Source/core/rendering/RenderBlock.cpp
+++ b/Source/core/rendering/RenderBlock.cpp
@@ -365,18 +365,20 @@ void RenderBlock::styleDidChange(StyleDifference diff, const RenderStyle* oldSty
void RenderBlock::repaintTreeAfterLayout(const RenderLayerModelObject& repaintContainer)
{
- if (!shouldCheckForInvalidationAfterLayout())
- return;
+ // Note, we don't want to early out here using shouldCheckForInvalidationAfterLayout as
+ // we have to make sure we go through any positioned objects as they won't be seen in
+ // the normal tree walk.
- RenderBox::repaintTreeAfterLayout(repaintContainer);
+ if (shouldCheckForInvalidationAfterLayout())
+ RenderBox::repaintTreeAfterLayout(repaintContainer);
// Take care of positioned objects. This is required as LayoutState keeps a single clip rect.
if (TrackedRendererListHashSet* positionedObjects = this->positionedObjects()) {
TrackedRendererListHashSet::iterator end = positionedObjects->end();
LayoutStateMaintainer statePusher(*this, isTableRow() ? LayoutSize() : locationOffset());
+
for (TrackedRendererListHashSet::iterator it = positionedObjects->begin(); it != end; ++it) {
RenderBox* box = *it;
-
// One of the renderers we're skipping over here may be the child's repaint container,
// so we can't pass our own repaint container along.
const RenderLayerModelObject& repaintContainerForChild = *box->containerForRepaint();

Powered by Google App Engine
This is Rietveld 408576698