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

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Jul 25 09:19:46 PDT 2013


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





--- Comment #6 from Zalan Bujtas <zalan at apple.com>  2013-07-25 09:19:36 PST ---
(In reply to comment #3)
> Does this happen without tiled drawing enabled.
> 
> I think view()->repaint(); is broken with tiled drawing; it only repaints the visible part of the view, but we need to dirty all tiles.

(recap:
1, Both body and html background get propagated up to the viewport. Say, if body has background-color attribute set, while <html> doesn't, the color is applied not only on the body but on both the html and the viewport. 
3. With the current 'view()->repaint()' setup, it works just fine as long as the document is smaller than the viewport. When the document extends the viewport, the out-of-the-viewport area of the existing tiles end up with wrong(old) background color(no repaint). 
4. As the document position is changed and new tiles are getting created, they are painted with the correct color. That's why the linked page gets the wrong background color only on a 'small' portion of the document.
5. With tiles off, it works fine as we always repaint when the document position is changed. (though with the exception of the renderview's rect is applied mistakenly when the doc pos != 0) )

We could either 
1. simply dirty all the tiles 
or 
2, be a bit more verbose by doing something like this:
repaint(); ->(repaint this)
if (isBody())
  parent()->repaint(); ->(repaint <html>, in case html does not have background set)
view()->repaint(); ->(repaint the viewport, in case the document is smaller than the viewport)

but that's pretty much equivalent of making all the tiles dirty and it just creates noise.
What I am not sure about is whether view()->repaint() should be extended to cover all the tiles too (so it would always dirty them all) or come up with a dedicated function for this specific usecase.

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