[Webkit-unassigned] [Bug 33150] Do not render the full frame when there is some elements with fixed positioning

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Sat Jan 23 04:42:29 PST 2010


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


Benjamin Poulain <benjamin.poulain at nokia.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #47186|0                           |1
        is obsolete|                            |
  Attachment #47270|                            |review?, commit-queue?
               Flag|                            |




--- Comment #45 from Benjamin Poulain <benjamin.poulain at nokia.com>  2010-01-23 04:42:25 PST ---
Created an attachment (id=47270)
 --> (https://bugs.webkit.org/attachment.cgi?id=47270)
Repaint only the invalidated area after scrolling

The same patch with minor modification for Mac.

As Darin Adler pointed out, there is a different path for scrolling when the
view is a platformWidget():
bool ScrollView::scroll(ScrollDirection direction, ScrollGranularity
granularity)
{
    if (platformWidget())
        return platformScroll(direction, granularity);

In this case, ScrollView::scrollContents() is never used.


So, if platformWidget() we need the same behavior as before. I have change the
object registration function to check for platformWidget():
void FrameView::registerFixedPositionedObject(RenderObject* object)
{
    if (platformWidget() && m_fixedPositionedObjects.isEmpty())
        setCanBlitOnScroll(false);
    m_fixedPositionedObjects.add(object);
}

void FrameView::unregisterFixedPositionedObject(RenderObject* object)
{
    bool wasEmpty = m_fixedPositionedObjects.isEmpty();
    m_fixedPositionedObjects.remove(object);
    if (platformWidget() && !wasEmpty && m_fixedPositionedObjects.isEmpty())
        setCanBlitOnScroll(!useSlowRepaints());
}

And the same for FrameView::useSlowRepaints:
bool FrameView::useSlowRepaints() const
{
    return m_useSlowRepaints || m_slowRepaintObjectCount > 0 ||
(platformWidget() && !m_fixedPositionedObjects.isEmpty()) || m_isOverlapped ||
!m_contentIsOpaque;
}

bool FrameView::useSlowRepaintsIfNotOverlapped() const
{
    return m_useSlowRepaints || m_slowRepaintObjectCount > 0 ||
(platformWidget() && !m_fixedPositionedObjects.isEmpty()) ||
!m_contentIsOpaque;
}

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