[Webkit-unassigned] [Bug 119033] Background doesn't fully repaint on this page

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jul 24 09:54:33 PDT 2013


https://bugs.webkit.org/show_bug.cgi?id=119033


Zalan Bujtas <zalan at apple.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |zalan at apple.com




--- Comment #2 from Zalan Bujtas <zalan at apple.com>  2013-07-24 09:54:24 PST ---
This is an issue with missing repaint rects. When the style change happens, we send repaints on the content -excluding the margins and on the entire RenderView() (see below). Making the entire canvas dirty is meant to fix the background repaint issue on the body/html. However, when the body's margin makes its parent (html) larger than the viewport, repainting only the canvas is not sufficient.
Something like this could address the problem. ->

diff --git a/Source/WebCore/rendering/RenderBox.cpp b/Source/WebCore/rendering/RenderBox.cpp
index d93dbf0..d8f17d5 100644
--- a/Source/WebCore/rendering/RenderBox.cpp
+++ b/Source/WebCore/rendering/RenderBox.cpp
@@ -205,10 +205,12 @@ void RenderBox::styleWillChange(StyleDifference diff, const RenderStyle* newStyl

     RenderStyle* oldStyle = style();
     if (oldStyle) {
-        // The background of the root element or the body element could propagate up to
-        // the canvas.  Just dirty the entire canvas when our style changes substantially.
+        // The background of the root or the body element could propagate up to
+        // the canvas. Just dirty the parents including the entire canvas when our style changes substantially.
         if (diff >= StyleDifferenceRepaint && node() &&
             (node()->hasTagName(htmlTag) || node()->hasTagName(bodyTag))) {
+            if (parent() && parent() != view())
+                parent()->repaint();
             view()->repaint();

 #if USE(ACCELERATED_COMPOSITING)

-- 
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