Changeset 150775 in webkit


Ignore:
Timestamp:
May 27, 2013 1:07:40 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

drop-shadow filter with overflow:hidden child misbehaves.
https://bugs.webkit.org/show_bug.cgi?id=109783

Patch by Zalan Bujtas <Alan Bujtas> on 2013-05-27
Reviewed by Simon Fraser.

Applying CSS filters only to the scrollbar rect leaves rendering
artefacts. Filters should skip such partial repaints.

Tests: Test framework uses mock theme for scrollbars. Such scrollbars do not
initiate partial repaints.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::setupFilters):
(WebCore::RenderLayer::paintLayerContents):

  • rendering/RenderLayer.h:

(RenderLayer):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r150772 r150775  
     12013-05-27  Zalan Bujtas  <zalan@apple.com>
     2
     3        drop-shadow filter with overflow:hidden child misbehaves.
     4        https://bugs.webkit.org/show_bug.cgi?id=109783
     5
     6        Reviewed by Simon Fraser.
     7
     8        Applying CSS filters only to the scrollbar rect leaves rendering
     9        artefacts. Filters should skip such partial repaints.
     10
     11        Tests: Test framework uses mock theme for scrollbars. Such scrollbars do not
     12        initiate partial repaints.
     13
     14        * rendering/RenderLayer.cpp:
     15        (WebCore::RenderLayer::setupFilters):
     16        (WebCore::RenderLayer::paintLayerContents):
     17        * rendering/RenderLayer.h:
     18        (RenderLayer):
     19
    1202013-05-27  Xueqing Huang  <huangxueqing@baidu.com>
    221
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r150631 r150775  
    37713771
    37723772#if ENABLE(CSS_FILTERS)
    3773 PassOwnPtr<FilterEffectRendererHelper> RenderLayer::setupFilters(GraphicsContext* context, LayerPaintingInfo& paintingInfo, const LayoutPoint& offsetFromRoot, IntRect& rootRelativeBounds, bool& rootRelativeBoundsComputed)
     3773PassOwnPtr<FilterEffectRendererHelper> RenderLayer::setupFilters(GraphicsContext* context, LayerPaintingInfo& paintingInfo, PaintLayerFlags paintFlags, const LayoutPoint& offsetFromRoot, IntRect& rootRelativeBounds, bool& rootRelativeBoundsComputed)
    37743774{
    37753775    if (context->paintingDisabled())
     3776        return nullptr;
     3777
     3778    if (paintFlags & PaintLayerPaintingOverlayScrollbars)
    37763779        return nullptr;
    37773780
     
    38743877    GraphicsContext* transparencyLayerContext = context;
    38753878#if ENABLE(CSS_FILTERS)
    3876     OwnPtr<FilterEffectRendererHelper> filterPainter = setupFilters(context, localPaintingInfo, offsetFromRoot, rootRelativeBounds, rootRelativeBoundsComputed);
     3879    OwnPtr<FilterEffectRendererHelper> filterPainter = setupFilters(context, localPaintingInfo, paintFlags, offsetFromRoot, rootRelativeBounds, rootRelativeBoundsComputed);
    38773880    if (filterPainter) {
    38783881        context = filterPainter->filterContext();
  • trunk/Source/WebCore/rendering/RenderLayer.h

    r150399 r150775  
    943943    bool setupClipPath(GraphicsContext*, const LayerPaintingInfo&, const LayoutPoint& offsetFromRoot, IntRect& rootRelativeBounds, bool& rootRelativeBoundsComputed);
    944944#if ENABLE(CSS_FILTERS)
    945     PassOwnPtr<FilterEffectRendererHelper> setupFilters(GraphicsContext*, LayerPaintingInfo&, const LayoutPoint& offsetFromRoot, IntRect& rootRelativeBounds, bool& rootRelativeBoundsComputed);
     945    PassOwnPtr<FilterEffectRendererHelper> setupFilters(GraphicsContext*, LayerPaintingInfo&, PaintLayerFlags, const LayoutPoint& offsetFromRoot, IntRect& rootRelativeBounds, bool& rootRelativeBoundsComputed);
    946946    GraphicsContext* applyFilters(FilterEffectRendererHelper*, GraphicsContext* originalContext, LayerPaintingInfo&, LayerFragments&);
    947947#endif
Note: See TracChangeset for help on using the changeset viewer.