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

Side by Side Diff: Source/core/rendering/RenderBox.cpp

Issue 204843002: Reduce invalidation on children-needs-layout containers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. 7 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 // If we are getting an overflow clip, preemptively erase any ov erflowing content. 287 // If we are getting an overflow clip, preemptively erase any ov erflowing content.
288 // FIXME: This should probably consult RenderOverflow. 288 // FIXME: This should probably consult RenderOverflow.
289 repaint(); 289 repaint();
290 } 290 }
291 } 291 }
292 } 292 }
293 setHasOverflowClip(boxHasOverflowClip); 293 setHasOverflowClip(boxHasOverflowClip);
294 294
295 setHasTransform(styleToUse->hasTransformRelatedProperty()); 295 setHasTransform(styleToUse->hasTransformRelatedProperty());
296 setHasReflection(styleToUse->boxReflect()); 296 setHasReflection(styleToUse->boxReflect());
297
298 bool hasEffectVisualOverflow = style()->hasVisualOverflowingEffect() || styl e()->hasOutline();
299 setHasNothingToPaint(!style()->hasBorder() && !style()->hasBackground() && ! hasEffectVisualOverflow);
297 } 300 }
298 301
299 void RenderBox::layout() 302 void RenderBox::layout()
300 { 303 {
301 ASSERT(needsLayout()); 304 ASSERT(needsLayout());
302 305
303 LayoutRectRecorder recorder(*this); 306 LayoutRectRecorder recorder(*this);
304 307
305 RenderObject* child = firstChild(); 308 RenderObject* child = firstChild();
306 if (!child) { 309 if (!child) {
(...skipping 3846 matching lines...) Expand 10 before | Expand all | Expand 10 after
4153 { 4156 {
4154 ASSERT(!needsLayout()); 4157 ASSERT(!needsLayout());
4155 // If fragmentation height has changed, we need to lay out. No need to enter the renderer if it 4158 // If fragmentation height has changed, we need to lay out. No need to enter the renderer if it
4156 // is childless, though. 4159 // is childless, though.
4157 if (view()->layoutState()->pageLogicalHeightChanged() && firstChild()) 4160 if (view()->layoutState()->pageLogicalHeightChanged() && firstChild())
4158 layoutScope.setChildNeedsLayout(this); 4161 layoutScope.setChildNeedsLayout(this);
4159 } 4162 }
4160 4163
4161 void RenderBox::addVisualEffectOverflow() 4164 void RenderBox::addVisualEffectOverflow()
4162 { 4165 {
4163 if (!style()->boxShadow() && !style()->hasBorderImageOutsets()) 4166 if (!style()->hasVisualOverflowingEffect())
4164 return; 4167 return;
4165 4168
4166 bool isFlipped = style()->isFlippedBlocksWritingMode(); 4169 bool isFlipped = style()->isFlippedBlocksWritingMode();
4167 bool isHorizontal = isHorizontalWritingMode(); 4170 bool isHorizontal = isHorizontalWritingMode();
4168 4171
4169 LayoutRect borderBox = borderBoxRect(); 4172 LayoutRect borderBox = borderBoxRect();
4170 LayoutUnit overflowMinX = borderBox.x(); 4173 LayoutUnit overflowMinX = borderBox.x();
4171 LayoutUnit overflowMaxX = borderBox.maxX(); 4174 LayoutUnit overflowMaxX = borderBox.maxX();
4172 LayoutUnit overflowMinY = borderBox.y(); 4175 LayoutUnit overflowMinY = borderBox.y();
4173 LayoutUnit overflowMaxY = borderBox.maxY(); 4176 LayoutUnit overflowMaxY = borderBox.maxY();
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
4705 return 0; 4708 return 0;
4706 4709
4707 if (!layoutState && !flowThreadContainingBlock()) 4710 if (!layoutState && !flowThreadContainingBlock())
4708 return 0; 4711 return 0;
4709 4712
4710 RenderBlock* containerBlock = containingBlock(); 4713 RenderBlock* containerBlock = containingBlock();
4711 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop(); 4714 return containerBlock->offsetFromLogicalTopOfFirstPage() + logicalTop();
4712 } 4715 }
4713 4716
4714 } // namespace WebCore 4717 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698