[Webkit-unassigned] [Bug 24358] New: [GTK] Scrollbars not clipped correctly

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Mar 4 10:06:11 PST 2009


           Summary: [GTK] Scrollbars not clipped correctly
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: WebKit Gtk
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: xan.lopez at gmail.com

The expose handler in WebKitWebView has two branches. One coalesces all the
damage regions in one big area and sends that to frame()->view()->paint(), and
other sends each region individually. In both cases the clip area is passed as
an IntRect in the second parameter of paint(), but there's a problem: our
Scrollbar ::paint method ignores that and always uses the bounding box of all
the regions in the Expose event as the clip rectangle. This works ok when we
also merge the regions ourselves, but does not work when we send each one
separatedly: in that case we'll use as clip rectangle a much bigger area than
what we actually have to paint, and will risk painting the scrollbars outside
of the visible area.

The simple fix is to change the Widget::paint method to use the clip rectangle
parameter always. Unfortunately this introduces another problem: the
floatingdiv.html manual test stops working, the scrollbar there is invisible
again. I must say that I'm not 100% sure why, but my theory is that since we
are now using the correct clip rectangle, we only send an expose event with the
minimum area, instead of a much larger one, and thus we uncover a new bug: we
are not applying the needed coordinate translation for our Scrollbar widgets in
the ::paint method.

The first patch fixes these two problems.

The second one moves the ::paint method to ScrollbarGtk, since it's now
scrollbar specific and this is the only actual widget we have anyway.

The third one changes the frameRectsChanged method to only take into account
non ScrollView scrollbars, since our ScrollView scrollbars are native and won't
go through this codepath (the same is done in the ::paint method).

Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

More information about the webkit-unassigned mailing list