⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 181605 in webkit


Ignore:
Timestamp:
Mar 16, 2015, 6:47:50 PM (11 years ago)
Author:
bshafiei@apple.com
Message:

Merged r181587. rdar://problem/20181605

Location:
branches/safari-600.5-branch/Source
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-600.5-branch/Source/WebCore/ChangeLog

    r181590 r181605  
     12015-03-16  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Merge r181587.
     4
     5    2015-03-16  Brent Fulgham  <bfulgham@apple.com>
     6
     7            WebKit1 Clients Are Not Reliably Repainted
     8            https://bugs.webkit.org/show_bug.cgi?id=142750
     9            <rdar://problem/20042453>
     10
     11            Reviewed by Simon Fraser.
     12
     13            * page/FrameView.cpp:
     14            (WebCore::FrameView::paintContents): Move "Red Rect" debug painting before
     15            the early return so we can see when this happening in debug builds.
     16            * page/FrameView.h:
     17            (WebCore::FrameView::inPaintableState): Added.
     18
    1192015-03-16  Babak Shafiei  <bshafiei@apple.com>
    220
  • branches/safari-600.5-branch/Source/WebCore/page/FrameView.cpp

    r180387 r181605  
    37103710void FrameView::paintContents(GraphicsContext* context, const IntRect& dirtyRect)
    37113711{
    3712     if (m_layoutPhase == InViewSizeAdjust)
    3713         return;
    3714 
    3715     ASSERT(m_layoutPhase == InPostLayerPositionsUpdatedAfterLayout || m_layoutPhase == OutsideLayout);
    3716 
    37173712#ifndef NDEBUG
    37183713    bool fillWithRed;
     
    37343729#endif
    37353730
     3731    if (m_layoutPhase == InViewSizeAdjust)
     3732        return;
     3733   
     3734    ASSERT(m_layoutPhase == InPostLayerPositionsUpdatedAfterLayout || m_layoutPhase == OutsideLayout);
     3735   
    37363736    RenderView* renderView = this->renderView();
    37373737    if (!renderView) {
  • branches/safari-600.5-branch/Source/WebCore/page/FrameView.h

    r180387 r181605  
    111111    bool layoutPending() const;
    112112    bool isInLayout() const { return m_layoutPhase == InLayout; }
     113    bool inPaintableState() { return m_layoutPhase != InLayout && m_layoutPhase != InViewSizeAdjust && m_layoutPhase != InPostLayout; }
    113114
    114115    RenderObject* layoutRoot(bool onlyDuringLayout = false) const;
  • branches/safari-600.5-branch/Source/WebKit/mac/ChangeLog

    r179901 r181605  
     12015-03-16  Babak Shafiei  <bshafiei@apple.com>
     2
     3        Merge r181587.
     4
     5    2015-03-16  Brent Fulgham  <bfulgham@apple.com>
     6
     7            WebKit1 Clients Are Not Reliably Repainted
     8            https://bugs.webkit.org/show_bug.cgi?id=142750
     9            <rdar://problem/20042453>
     10
     11            Reviewed by Simon Fraser.
     12
     13            Check with the FrameView to see if we are in an immediately paintable state. If we are not,
     14            mark the view as dirty once the _immediateScrollToPoint operation is complete so that the
     15            region will be painted properly.
     16
     17            * WebView/WebClipView.mm:
     18            (-[WebClipView _immediateScrollToPoint:]):
     19
    1202015-02-10  Lucas Forschler  <lforschler@apple.com>
    221
  • branches/safari-600.5-branch/Source/WebKit/mac/WebView/WebClipView.mm

    r165676 r181605  
    11/*
    2  * Copyright (C) 2005 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2005, 2015 Apple Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    112112    [[self window] _enableDelayedWindowDisplay];
    113113
     114    // We may hit this immediate scrolling code during a layout operation trigged by an AppKit call. When
     115    // this happens, WebCore will not paint. So, we need to mark this region dirty so that it paints properly.
     116    WebFrameView *webFrameView = (WebFrameView *)[[self superview] superview];
     117    if ([webFrameView isKindOfClass:[WebFrameView class]]) {
     118        if (Frame* coreFrame = core([webFrameView webFrame])) {
     119            if (FrameView* frameView = coreFrame->view()) {
     120                if (!frameView->inPaintableState())
     121                    [self setNeedsDisplay:YES];
     122            }
     123        }
     124    }
     125
    114126    _isScrolling = NO;
    115127}
Note: See TracChangeset for help on using the changeset viewer.