Changeset 149207 in webkit


Ignore:
Timestamp:
Apr 26, 2013 2:13:19 PM (11 years ago)
Author:
Simon Fraser
Message:

Layer-backed WebViews don't repaint content outside the visible area
https://bugs.webkit.org/show_bug.cgi?id=115275

Reviewed by Beth Dakin.

Source/WebCore:

Export ScrollView::setPaintsEntireContents(bool).

  • WebCore.exp.in:

Source/WebKit/mac:

When a client of WebView makes the WebView be layer-backed, then
AppKit propagaes the layer-backing down to the WebHTMLView (but
no further).

In this situation, we had a bug where content that was not
in the visible content rect would not get repainted, because
WebCore clips repaints to the visible rect.

Fix by calling ScrollView::setPaintsEntireContents(bool) from
-[WebHTMLView setLayer:], saying that we need
to paint the entire contents if we have a layer.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView setLayer:]):

Location:
trunk/Source
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r149203 r149207  
     12013-04-26  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Layer-backed WebViews don't repaint content outside the visible area
     4        https://bugs.webkit.org/show_bug.cgi?id=115275
     5
     6        Reviewed by Beth Dakin.
     7
     8        Export ScrollView::setPaintsEntireContents(bool).
     9
     10        * WebCore.exp.in:
     11
    1122013-04-26  Daker Fernandes Pinheiro  <daker.pinheiro@openbossa.org>
    213
  • trunk/Source/WebCore/WebCore.exp.in

    r149156 r149207  
    8181__ZN7WebCore10ScrollView17setUseFixedLayoutEb
    8282__ZN7WebCore10ScrollView18setFixedLayoutSizeERKNS_7IntSizeE
     83__ZN7WebCore10ScrollView23setPaintsEntireContentsEb
    8384__ZN7WebCore10ScrollView20setCanHaveScrollbarsEb
    8485__ZN7WebCore10ScrollView21setDelegatesScrollingEb
  • trunk/Source/WebKit/mac/ChangeLog

    r149156 r149207  
     12013-04-26  Simon Fraser  <simon.fraser@apple.com>
     2
     3        Layer-backed WebViews don't repaint content outside the visible area
     4        https://bugs.webkit.org/show_bug.cgi?id=115275
     5
     6        Reviewed by Beth Dakin.
     7
     8        When a client of WebView makes the WebView be layer-backed, then
     9        AppKit propagaes the layer-backing down to the WebHTMLView (but
     10        no further).
     11       
     12        In this situation, we had a bug where content that was not
     13        in the visible content rect would not get repainted, because
     14        WebCore clips repaints to the visible rect.
     15       
     16        Fix by calling ScrollView::setPaintsEntireContents(bool) from
     17        -[WebHTMLView setLayer:], saying that we need
     18        to paint the entire contents if we have a layer.
     19
     20        * WebView/WebHTMLView.mm:
     21        (-[WebHTMLView setLayer:]):
     22
    1232013-04-25  Chris Fleizach  <cfleizach@apple.com>
    224
  • trunk/Source/WebKit/mac/WebView/WebHTMLView.mm

    r148525 r149207  
    31543154}
    31553155
     3156- (void)setLayer:(CALayer *)layer
     3157{
     3158    if (Frame* frame = core([self _frame])) {
     3159        if (FrameView* view = frame->view())
     3160            view->setPaintsEntireContents(layer);
     3161    }
     3162
     3163    [super setLayer:layer];
     3164}
     3165
    31563166#if !LOG_DISABLED
    31573167- (void)setNeedsDisplay:(BOOL)flag
Note: See TracChangeset for help on using the changeset viewer.