WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
157967
Changing border color and size simultaneously fails to repaint
https://bugs.webkit.org/show_bug.cgi?id=157967
Summary
Changing border color and size simultaneously fails to repaint
Philip Rogers
Reported
2016-05-20 20:57:06 PDT
Created
attachment 279536
[details]
Dynamic table border style repaint bug We're working on a table border sizing bug in
https://crbug.com/613728
where all browsers do something a little weird wrt updating table borders. I noticed a repaint bug in Safari 9.1.1/dev while investigating this. In the attached testcase, there should be no red visible after 500ms. In Safari, red is visible after 500ms and pressing ctrl+a causes a repaint which makes the red disappear.
Attachments
Dynamic table border style repaint bug
(893 bytes, text/html)
2016-05-20 20:57 PDT
,
Philip Rogers
no flags
Details
Test case
(458 bytes, text/html)
2016-05-21 08:50 PDT
,
zalan
no flags
Details
Patch
(5.59 KB, patch)
2016-05-23 12:56 PDT
,
zalan
no flags
Details
Formatted Diff
Diff
Patch
(5.57 KB, patch)
2016-05-23 16:21 PDT
,
zalan
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
zalan
Comment 1
2016-05-21 08:50:43 PDT
Created
attachment 279543
[details]
Test case I assume if we fix the layout issue (so that we relayout all the boxes affected by the collapsed border change) the repaint bug will go away.
zalan
Comment 2
2016-05-21 11:13:11 PDT
Marking the affected cells dirty (including the prefWidth bit) fixes the layout issue (and it fixes the missing repaint too)
zalan
Comment 3
2016-05-21 13:04:24 PDT
I wonder how common this collapse border related style change is as now with this fix, we do a lot more work. diff --git a/Source/WebCore/rendering/RenderTable.cpp b/Source/WebCore/rendering/RenderTable.cpp index d8a8d6e..f6289b6 100644 --- a/Source/WebCore/rendering/RenderTable.cpp +++ b/Source/WebCore/rendering/RenderTable.cpp @@ -594,6 +594,14 @@ void RenderTable::layout() clearNeedsLayout(); } +static inline void markCellDirtyWhenCollapsedBorderChanges(RenderTableCell* cell) +{ + if (!cell) + return; + cell->invalidateHasEmptyCollapsedBorders(); + cell->setNeedsLayoutAndPrefWidthsRecalc(); +} + void RenderTable::invalidateCollapsedBorders(RenderTableCell* cellWithStyleChange) { m_collapsedBordersValid = false; @@ -608,14 +616,10 @@ void RenderTable::invalidateCollapsedBorders(RenderTableCell* cellWithStyleChang if (cellWithStyleChange) { // It is enough to invalidate just the surrounding cells when cell border style changes. cellWithStyleChange->invalidateHasEmptyCollapsedBorders(); - if (auto* below = cellBelow(cellWithStyleChange)) - below->invalidateHasEmptyCollapsedBorders(); - if (auto* above = cellAbove(cellWithStyleChange)) - above->invalidateHasEmptyCollapsedBorders(); - if (auto* before = cellBefore(cellWithStyleChange)) - before->invalidateHasEmptyCollapsedBorders(); - if (auto* after = cellAfter(cellWithStyleChange)) - after->invalidateHasEmptyCollapsedBorders(); + markCellDirtyWhenCollapsedBorderChanges(cellBelow(cellWithStyleChange)); + markCellDirtyWhenCollapsedBorderChanges(cellAbove(cellWithStyleChange)); + markCellDirtyWhenCollapsedBorderChanges(cellBefore(cellWithStyleChange)); + markCellDirtyWhenCollapsedBorderChanges(cellAfter(cellWithStyleChange)); return; }
zalan
Comment 4
2016-05-23 11:31:49 PDT
rdar://problem/26423918
zalan
Comment 5
2016-05-23 12:56:02 PDT
Created
attachment 279578
[details]
Patch
Dave Hyatt
Comment 6
2016-05-23 13:38:15 PDT
Comment on
attachment 279578
[details]
Patch r=me
WebKit Commit Bot
Comment 7
2016-05-23 14:03:29 PDT
Comment on
attachment 279578
[details]
Patch Clearing flags on attachment: 279578 Committed
r201296
: <
http://trac.webkit.org/changeset/201296
>
WebKit Commit Bot
Comment 8
2016-05-23 14:03:34 PDT
All reviewed patches have been landed. Closing bug.
WebKit Commit Bot
Comment 9
2016-05-23 15:32:28 PDT
Re-opened since this is blocked by
bug 158002
zalan
Comment 10
2016-05-23 16:21:40 PDT
Created
attachment 279603
[details]
Patch
zalan
Comment 11
2016-05-23 16:22:11 PDT
Added document.body.offsetWidth to force layout.
WebKit Commit Bot
Comment 12
2016-05-23 18:52:11 PDT
Comment on
attachment 279603
[details]
Patch Clearing flags on attachment: 279603 Committed
r201312
: <
http://trac.webkit.org/changeset/201312
>
WebKit Commit Bot
Comment 13
2016-05-23 18:52:17 PDT
All reviewed patches have been landed. Closing bug.
zalan
Comment 14
2016-05-24 10:31:32 PDT
see
https://bugs.webkit.org/show_bug.cgi?id=158009
zalan
Comment 15
2016-05-24 13:02:02 PDT
http://trac.webkit.org/changeset/201346
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug