Skip to content
  • simon.fraser@apple.com's avatar
    Setting -webkit-filter: in :active selector causes failure to redraw · 3d54f8b4
    simon.fraser@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=120135
    
    Source/WebCore:
    
    Reviewed by Jer Noble.
    
    When removing a filter on an inline child of a compositing layer,
    the inline loses its RenderLayer and compositing layer, but we fail to
    repaint the compositing layer that the inline is now painting into.
    
    This worked correctly for opacity, because opacity toggles cause
    layouts (which then paint the correct layer), so do the same for filters.
    
    Test: css3/filters/remove-filter-repaint.html
    
    * rendering/style/RenderStyle.cpp:
    (WebCore::RenderStyle::changeRequiresLayout): Return true if we toggled
    between having filters and not. Drive-by cleanup, making use of new convenience
    function for hasOpacity().
    * rendering/style/StyleRareNonInheritedData.cpp:
    (WebCore::StyleRareNonInheritedData::hasFilters): Returns true if we have any
    filters.
    * rendering/style/StyleRareNonInheritedData.h:
    (WebCore::StyleRareNonInheritedData::hasOpacity): Convenience function that
    returns true if opacity is < 1.
    
    LayoutTests:
    
    Reviewed by Jer Noble.
    
    Ref test for removing a filter on an inline.
    
    * css3/filters/remove-filter-repaint-expected.html: Added.
    * css3/filters/remove-filter-repaint.html: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154430 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    3d54f8b4