Issue #1355 - Speed up the traversal of a table row frame's child cells

Speed up getting the first cellframe in a row and the next cellframe after the given one
This commit is contained in:
win7-7 2020-01-29 11:14:34 +02:00 committed by Roy Tam
commit 02487fecd6
4 changed files with 27 additions and 28 deletions

View file

@ -215,7 +215,17 @@ public:
bool HasPctOverBSize();
void SetHasPctOverBSize(bool aValue);
nsTableCellFrame* GetNextCell() const;
nsTableCellFrame* GetNextCell() const
{
nsIFrame* sibling = GetNextSibling();
#ifdef DEBUG
if (sibling) {
nsTableCellFrame* cellFrame = do_QueryFrame(sibling);
MOZ_ASSERT(cellFrame, "How do we have a non-cell sibling?");
}
#endif // DEBUG
return static_cast<nsTableCellFrame*>(sibling);
}
virtual LogicalMargin GetBorderWidth(WritingMode aWM) const;
@ -350,4 +360,17 @@ private:
BCPixelSize mIStartBorder;
};
// Implemented here because that's a sane-ish way to make the includes work out.
inline nsTableCellFrame* nsTableRowFrame::GetFirstCell() const
{
nsIFrame* firstChild = mFrames.FirstChild();
#ifdef DEBUG
if (firstChild) {
nsTableCellFrame* cellFrame = do_QueryFrame(firstChild);
MOZ_ASSERT(cellFrame, "How do we have a non-cell sibling?");
}
#endif // DEBUG
return static_cast<nsTableCellFrame*>(firstChild);
}
#endif