Index: Source/WebCore/rendering/RenderObject.cpp |
=================================================================== |
--- Source/WebCore/rendering/RenderObject.cpp (revision 118866) |
+++ Source/WebCore/rendering/RenderObject.cpp (working copy) |
@@ -592,14 +592,26 @@ |
static inline bool objectIsRelayoutBoundary(const RenderObject* object) |
{ |
- // FIXME: In future it may be possible to broaden this condition in order to improve performance. |
- // Table cells are excluded because even when their CSS height is fixed, their height() |
- // may depend on their contents. |
- return object->isTextControl() |
+ // FIXME: In future it may be possible to broaden these conditions in order to improve performance. |
+ if (object->isTextControl()) |
+ return true; |
+ |
#if ENABLE(SVG) |
- || object->isSVGRoot() |
+ if (object->isSVGRoot()) |
+ return true; |
#endif |
- || (object->hasOverflowClip() && !object->style()->width().isIntrinsicOrAuto() && !object->style()->height().isIntrinsicOrAuto() && !object->style()->height().isPercent() && !object->isTableCell()); |
+ |
+ if (!object->hasOverflowClip()) |
+ return false; |
+ |
+ if (object->style()->width().isIntrinsicOrAuto() || object->style()->height().isIntrinsicOrAuto() || object->style()->height().isPercent()) |
+ return false; |
+ |
+ // Table parts can't be relayout roots since the table is responsible for layouting all the parts. |
+ if (object->isTablePart()) |
+ return false; |
+ |
+ return true; |
} |
void RenderObject::markContainingBlocksForLayout(bool scheduleRelayout, RenderObject* newRoot) |