[Webkit-unassigned] [Bug 5515] Border collapse problem with rowspan/colspan cells
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Sep 6 16:55:32 PDT 2012
https://bugs.webkit.org/show_bug.cgi?id=5515
Julien Chaffraix <jchaffraix at webkit.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #161153|review? |review-
Flag| |
--- Comment #33 from Julien Chaffraix <jchaffraix at webkit.org> 2012-09-06 16:55:46 PST ---
(From update of attachment 161153)
View in context: https://bugs.webkit.org/attachment.cgi?id=161153&action=review
> Source/WebCore/ChangeLog:9
> + Our handling of colspans and rowspans while resolving collapsed borders
> + on a table is not proper.
Globally this sentence doesn't add anything. How does this sentence help someone unfamiliar with your change understand what you did?
Adding a one line short / TL;DR description is totally welcome but think how you can pack *relevant* information in one sentence.
> Source/WebCore/ChangeLog:17
> + The left border (or the start border) specified for the first cell
> + adjacent to a spanned cell (rowspan) was being applied for the entire length
> + of the spanned cell's right (end border) border.
> +
> + Similarly, the top border (or the before border) specified for the first
> + cell below a spanned cell (colspan) was being applied for the entire
> + length of the spanned cell's bottom (after border) border.
Be careful how you phrase the change. start / before are not strictly equal to left / top but this ChangeLog mixes the 2 and makes people wonder if you know the difference.
> Source/WebCore/ChangeLog:21
> + collapsed borders.
Nowhere do you mention in your ChangeLog that this change is a work-around, please do and mention the bug with the right fix.
> Source/WebCore/rendering/RenderTableCell.cpp:342
> +static bool isValidCellForColRowSpanBorderResolution(const RenderTableCell* currCell, bool isStartOrEndBorder, const RenderTableCell* adjacentCell = 0)
Please NO BOOLEAN parameters. They make the call sites difficult to read and every time you add one you should ask yourself if it's needed. See http://ariya.ofilabs.com/2011/08/hall-of-api-shame-boolean-trap.html among other resources.
On top of that, here they are unnecessary and confusing. You should have 2 function dedicated to each logical direction.
> Source/WebCore/rendering/RenderTableCell.cpp:346
> + if (currCell->rowSpan() > 1)
> + return adjacentCell ? adjacentCell->rowSpan() > 1 : false;
First unrelated but this could be written: return adjacentCell && adjacentCell->rowSpan() > 1.
Second, I don't see the point of doing this comparison with an empty |adjacentCell|.
Finally, I really don't understand what the point of this check is. I would rather keep the alignment case as our heuristic here. Both choices are arbitrary but it matches other browsers on more cases and AFAICT yours requires a lot more rebaselining.
> Source/WebCore/rendering/RenderTableCell.cpp:509
> + if (!isEndColumn && isValidCellForColRowSpanBorderResolution(this, true)) {
NO! Changing this condition means that you now wrongly fall back to checking the |row|'s end border for middle rows if the cells has a rowspan.
> LayoutTests/fast/table/border-collapsing/collapsed-border-with-colspan.html:51
> +<!-- Red, green and blue colored borders should be displayed per cell. -->
Red should be reserved for failures. See our wiki on how to write good layout tests: http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree
Preferably this should be a ref-test.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list