summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderTableRow.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-05-07 11:21:11 +0200
commit2cf6c8816a73e0132bd8fa3b509d62d7c51b6e47 (patch)
tree988e8c5b116dd0466244ae2fe5af8ee9be926d76 /Source/WebCore/rendering/RenderTableRow.cpp
parentdd91e772430dc294e3bf478c119ef8d43c0a3358 (diff)
downloadqtwebkit-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.cpp26
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