RESOLVED FIXED 11359
Incomplete repaint of table cell's collapsed border when changing only the cell
https://bugs.webkit.org/show_bug.cgi?id=11359
Summary Incomplete repaint of table cell's collapsed border when changing only the cell
mitz
Reported 2006-10-19 11:43:52 PDT
See the attached test case, where the "table half" of the border doesn't repaint in green when you click the Test button, until you force a repaint.
Attachments
Test case (400 bytes, text/html)
2006-10-19 11:44 PDT, mitz
no flags
Override repaint rect computation for table cells (36.84 KB, patch)
2006-12-27 05:39 PST, mitz
hyatt: review-
Override repaint rect computation for table cells (36.89 KB, patch)
2006-12-27 15:09 PST, mitz
no flags
Override repaint rect computation for table cells (37.79 KB, patch)
2006-12-27 23:44 PST, mitz
no flags
Override repaint rect computation for table cells (38.66 KB, patch)
2006-12-30 08:58 PST, mitz
darin: review+
mitz
Comment 1 2006-10-19 11:44:38 PDT
Created attachment 11150 [details] Test case
mitz
Comment 2 2006-12-27 05:39:35 PST
Created attachment 12057 [details] Override repaint rect computation for table cells Includes change log and repaint test.
Dave Hyatt
Comment 3 2006-12-27 13:15:32 PST
Comment on attachment 12057 [details] Override repaint rect computation for table cells It seems like you aren't dealing with the case where a table cell has overflow and collapsed borders correctly. For example: <td><div style="width:100px">... put something in here that overflows...</div></td>
mitz
Comment 4 2006-12-27 15:09:39 PST
Created attachment 12072 [details] Override repaint rect computation for table cells Include horizontal overflow. I don't know if vertical overflow should ever occur. I managed to get vertical overflow but I think that's a bug.
mitz
Comment 5 2006-12-27 15:28:23 PST
(In reply to comment #4) > I don't know if vertical overflow should ever > occur. I managed to get vertical overflow but I think that's a bug. > I guess it could happen with an inline-block that has overflow, but currently such overflow counts as "layout overflow".
Dave Hyatt
Comment 6 2006-12-27 18:03:57 PST
I might just write this code assuming that layout vertical overflow could occur just to be paranoid, since I think maybe there are weird degenerate span cases that might cause it to happen.
Darin Adler
Comment 7 2006-12-27 22:30:44 PST
Comment on attachment 12072 [details] Override repaint rect computation for table cells + if (RenderTableCell* above = table()->cellAbove(this)) { + left = max(left, above->borderLeft(true)); + right = max(right, above->borderRight(true)); + } Indenting mistake. + int borderLeft() const { return borderLeft(false); } Why overloading instead of a default value for the parameter? This seems OK, but normally I'd only overload if I didn't want the parameter value inlined. r=me
mitz
Comment 8 2006-12-27 23:44:47 PST
Created attachment 12078 [details] Override repaint rect computation for table cells Added vertical overflow and fixed indentation. I didn't want to add the 'outer' parameter to borderLeft() in the base class. Instead, now the function that takes a parameter (and is defined for RenderTableCell only) is named borderHalfLeft().
mitz
Comment 9 2006-12-27 23:48:05 PST
Comment on attachment 12072 [details] Override repaint rect computation for table cells Removing the r+ to keep this from showing in the commit queue (I thought obsoleting alone would do it).
Darin Adler
Comment 10 2006-12-28 01:06:32 PST
Comment on attachment 12078 [details] Override repaint rect computation for table cells r=me
Alexey Proskuryakov
Comment 11 2006-12-28 10:44:39 PST
Committed revision 18454.
Alexey Proskuryakov
Comment 12 2006-12-28 11:31:11 PST
This has caused an assertion failure in dom/html/level2/html/HTMLCollection01.html; reverted in r18455.
mitz
Comment 13 2006-12-28 11:32:41 PST
Comment on attachment 12078 [details] Override repaint rect computation for table cells Bad, bad patch. Clearing the review flag to protect the innocent.
mitz
Comment 14 2006-12-30 08:58:22 PST
Created attachment 12123 [details] Override repaint rect computation for table cells Fixed the crash by ignoring outside borders if the table grid is dirty. Added a long comment explaining why I think this is okay. I named the getter needsSectionRecalc despite the setter being called setNeedSectionRecalc. I intend to clean up the naming in a future cleanup patch.
Darin Adler
Comment 15 2007-01-01 20:15:51 PST
Comment on attachment 12123 [details] Override repaint rect computation for table cells r=me again (I read your comment, and I believe it)
David Kilzer (:ddkilzer)
Comment 16 2007-01-01 20:53:32 PST
Committed revision 18516.
Note You need to log in before you can comment on or make changes to this bug.