WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
140331
Filters aren't applied to elements in columns after the first
https://bugs.webkit.org/show_bug.cgi?id=140331
Summary
Filters aren't applied to elements in columns after the first
Simon Fraser (smfr)
Reported
2015-01-09 20:58:17 PST
Issue with filters and columns.
Attachments
Testcase
(2.64 KB, text/html)
2015-01-09 20:59 PST
,
Simon Fraser (smfr)
no flags
Details
Patch
(9.74 KB, patch)
2015-01-13 13:48 PST
,
Dean Jackson
simon.fraser
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Simon Fraser (smfr)
Comment 1
2015-01-09 20:59:38 PST
Created
attachment 244402
[details]
Testcase
Simon Fraser (smfr)
Comment 2
2015-01-09 21:03:24 PST
rdar://problem/19313858
Simon Fraser (smfr)
Comment 3
2015-01-09 21:10:30 PST
The rootRelativeBounds computed by RenderLayer::setupFilters() doesn't take columns into account.
Simon Fraser (smfr)
Comment 4
2015-01-09 21:16:22 PST
clip-path is similarly broken.
Simon Fraser (smfr)
Comment 5
2015-01-09 21:41:26 PST
Fix is something like this: diff --git a/Source/WebCore/rendering/RenderLayer.cpp b/Source/WebCore/rendering/RenderLayer.cpp index 1e9f4955775fa120f39cca40126296089e043746..8688273887be2d6dba3d741afe925a02071de05b 100644 --- a/Source/WebCore/rendering/RenderLayer.cpp +++ b/Source/WebCore/rendering/RenderLayer.cpp @@ -4094,12 +4094,14 @@ void RenderLayer::paintLayerContents(GraphicsContext* context, const LayerPainti bool needToAdjustSubpixelQuantization = setupFontSubpixelQuantization(context, didQuantizeFonts); // Apply clip-path to context. - bool hasClipPath = setupClipPath(context, paintingInfo, offsetFromRoot, rootRelativeBounds, rootRelativeBoundsComputed); + LayoutSize columnAwareOffsetFromRoot = toLayoutSize(convertToLayerCoords(paintingInfo.rootLayer, LayoutPoint(), AdjustForColumns)); + bool hasClipPath = setupClipPath(context, paintingInfo, columnAwareOffsetFromRoot, rootRelativeBounds, rootRelativeBoundsComputed); LayerPaintingInfo localPaintingInfo(paintingInfo); GraphicsContext* transparencyLayerContext = context; - std::unique_ptr<FilterEffectRendererHelper> filterPainter = setupFilters(context, localPaintingInfo, paintFlags, offsetFromRoot, rootRelativeBounds, rootRelativeBoundsComputed); + + std::unique_ptr<FilterEffectRendererHelper> filterPainter = setupFilters(context, localPaintingInfo, paintFlags, columnAwareOffsetFromRoot, rootRelativeBounds, rootRelativeBoundsComputed); if (filterPainter) { context = filterPainter->filterContext(); if (context != transparencyLayerContext && haveTransparency) {
Dean Jackson
Comment 6
2015-01-13 13:48:17 PST
Created
attachment 244539
[details]
Patch
Simon Fraser (smfr)
Comment 7
2015-01-13 14:18:38 PST
Comment on
attachment 244539
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=244539&action=review
> Source/WebCore/rendering/RenderLayer.cpp:4110 > + if (renderer().flowThreadContainingBlock() && (renderer().hasClipPath() || hasFilterThatIsPainting(context, paintFlags)))
Is the renderer().flowThreadContainingBlock() permissive enough to handle blocks deeply nested inside columns?
Dean Jackson
Comment 8
2015-01-13 15:05:40 PST
Comment on
attachment 244539
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=244539&action=review
>> Source/WebCore/rendering/RenderLayer.cpp:4110 >> + if (renderer().flowThreadContainingBlock() && (renderer().hasClipPath() || hasFilterThatIsPainting(context, paintFlags))) > > Is the renderer().flowThreadContainingBlock() permissive enough to handle blocks deeply nested inside columns?
I believe so.
Dean Jackson
Comment 9
2015-01-13 15:22:47 PST
Committed
r178380
: <
http://trac.webkit.org/changeset/178380
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug