[webkit-reviews] review granted: [Bug 14858] <col> width ignored when not tied to a single cell : [Attachment 49318] proposed fix v2.5
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sun Mar 21 12:44:36 PDT 2010
David Kilzer (ddkilzer) <ddkilzer at webkit.org> has granted review:
Bug 14858: <col> width ignored when not tied to a single cell
https://bugs.webkit.org/show_bug.cgi?id=14858
Attachment 49318: proposed fix v2.5
https://bugs.webkit.org/attachment.cgi?id=49318&action=review
------- Additional Comments from David Kilzer (ddkilzer) <ddkilzer at webkit.org>
(In reply to comment #22)
> (From update of attachment 49318 [details])
> This looks great! Just a couple nits below:
>
> > Index: WebCore/ChangeLog
> > + Fixed width calculation for cells with span when <col> is defined
>
> You need to include a link to the bug in the ChangeLog entry.
>
> > + * rendering/RenderTableCell.cpp:
> > + (WebCore::RenderTableCell::styleOrColWidth): added the calculation
of cell width
> > + in case of <col> defined and span>1.
>
> Nit: Change "span>1" to "span > 1".
>
> > Index: WebCore/rendering/RenderTable.cpp
> > + RenderTableCol* colElem = toRenderTableCol(child);
> > + while (colElem) {
> > + int span = colElem->span();
> > + if (!colElem->firstChild()) {
> > + int startCol = cCol;
> > + int endCol = cCol + span - 1;
> > + cCol += span;
> > + if (cCol > col) {
> > + if (startEdge)
> > + *startEdge = startCol == col;
> > + if (endEdge)
> > + *endEdge = endCol == col;
> > + return colElem;
> > + }
> > + }
> > + colElem = nextColElement(colElem);
> > + if (!colElem)
> > break;
> > }
>
> You can actually leave off the final "if (!colElem) break;" statements in the
> while loop since the next iteration through the loop will catch this
condition
> and then return 0.
>
> > Index: WebCore/rendering/RenderTableCell.cpp
> > ===================================================================
> > --- WebCore/rendering/RenderTableCell.cpp (revision 53844)
> > +++ WebCore/rendering/RenderTableCell.cpp (working copy)
> > @@ -83,18 +83,42 @@ void RenderTableCell::updateFromElement(
> > Length RenderTableCell::styleOrColWidth() const
> > {
> > Length w = style()->width();
> > - if (colSpan() > 1 || !w.isAuto())
> > + if (!w.isAuto())
> > return w;
> > +
> > RenderTableCol* tableCol = table()->colElement(col());
> > +
> > if (tableCol) {
> > - w = tableCol->style()->width();
> > -
> > + int colSpanCount = colSpan();
> > +
> > + Length colWidthSum = Length(0, Fixed);
> > + for (int i = 1; i <= colSpanCount; i++) {
> > + Length colWidth = tableCol->style()->width();
> > +
> > + // Percentage value should be returned only for colSpan=1.
> > + // Otherwise we return original width for the cell.
>
> Why is this true? Is this part of the standard? Is this covered by an
> existing test case? (If not, you need to add a test case for this condition
as
> well.)
I reviewed the new logic again per Comment #23, and I agree it preserves the
previous behavior, so this is no longer an issue.
> Nit: "colSpan=1" should be "colSpan == 1" to be clearer that it's an
equality
> check.
>
> > + if (!colWidth.isFixed()) {
> > + if (colSpanCount > 1)
> > + return w;
> > + return colWidth;
> > + }
> > Index: LayoutTests/ChangeLog
> > +2010-01-27 Dmitry Gorbik <socket.h at gmail.com>
> > +
> > + Reviewed by NOBODY (OOPS!).
> > +
> > + Fixed width calculation for cells with span when <col> is defined
>
> You need to include a link to the bug in the ChangeLog entry.
>
> > Index: LayoutTests/fast/table/col-width-span-expand.html
> > + <head>
>
> There is a tab on this line that should be 8 spaces.
r=me! I'll clean up the nits above and land this patch.
More information about the webkit-reviews
mailing list