diff options
| author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
|---|---|---|
| committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-05-07 11:21:11 +0200 |
| commit | 2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch) | |
| tree | 988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/WebCore/rendering/RenderTableRow.cpp | |
| parent | dd91e772430dc294e3bf478c119ef8d43c0a3358 (diff) | |
| download | qtwebkit-2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47.tar.gz | |
Imported WebKit commit 7e538425aa020340619e927792f3d895061fb54b (http://svn.webkit.org/repository/webkit/trunk@116286)
Diffstat (limited to 'Source/WebCore/rendering/RenderTableRow.cpp')
| -rw-r--r-- | Source/WebCore/rendering/RenderTableRow.cpp | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/Source/WebCore/rendering/RenderTableRow.cpp b/Source/WebCore/rendering/RenderTableRow.cpp index 23227448e..d9889008b 100644 --- a/Source/WebCore/rendering/RenderTableRow.cpp +++ b/Source/WebCore/rendering/RenderTableRow.cpp @@ -38,6 +38,7 @@ using namespace HTMLNames; RenderTableRow::RenderTableRow(Node* node) : RenderBox(node) + , m_rowIndex(unsetRowIndex) { // init RenderObject attributes setInline(false); // our object is not Inline @@ -72,7 +73,7 @@ void RenderTableRow::styleDidChange(StyleDifference diff, const RenderStyle* old updateBeforeAndAfterContent(); if (section() && oldStyle && style()->logicalHeight() != oldStyle->logicalHeight()) - section()->rowLogicalHeightChanged(section()->rowIndexForRenderer(this)); + section()->rowLogicalHeightChanged(rowIndex()); // If border was changed, notify table. if (parent()) { @@ -113,19 +114,14 @@ void RenderTableRow::addChild(RenderObject* child, RenderObject* beforeChild) return; } - RenderTableCell* cell = new (renderArena()) RenderTableCell(document() /* anonymous object */); - RefPtr<RenderStyle> newStyle = RenderStyle::create(); - newStyle->inheritFrom(style()); - newStyle->setDisplay(TABLE_CELL); - cell->setStyle(newStyle.release()); + RenderTableCell* cell = RenderTableCell::createAnonymousWithParentRenderer(this); addChild(cell, beforeChild); cell->addChild(child); return; } - - // If the next renderer is actually wrapped in an anonymous table cell, we need to go up and find that. - while (beforeChild && beforeChild->parent() != this) - beforeChild = beforeChild->parent(); + + if (beforeChild && beforeChild->parent() != this) + beforeChild = splitAnonymousBoxesAroundChild(beforeChild); RenderTableCell* cell = toRenderTableCell(child); @@ -153,7 +149,7 @@ void RenderTableRow::layout() if (child->isTableCell()) { RenderTableCell* cell = toRenderTableCell(child); if (!cell->needsLayout() && paginated && view()->layoutState()->pageLogicalHeight() && view()->layoutState()->pageLogicalOffset(cell->logicalTop()) != cell->pageLogicalOffset()) - cell->setChildNeedsLayout(true, false); + cell->setChildNeedsLayout(true, MarkOnlyThis); if (child->needsLayout()) { cell->computeBlockDirectionMargins(table()); @@ -249,4 +245,12 @@ void RenderTableRow::imageChanged(WrappedImagePtr, const IntRect*) repaint(); } +RenderTableRow* RenderTableRow::createAnonymousWithParentRenderer(const RenderObject* parent) +{ + RefPtr<RenderStyle> newStyle = RenderStyle::createAnonymousStyleWithDisplay(parent->style(), TABLE_ROW); + RenderTableRow* newRow = new (parent->renderArena()) RenderTableRow(parent->document() /* is anonymous */); + newRow->setStyle(newStyle.release()); + return newRow; +} + } // namespace WebCore |
