https://bugs.webkit.org/show_bug.cgi?id=76329
Source/WebCore:
Reviewed by Dan Bernstein.
When doing a paint with painting disabled on the GraphicsContext, as we do
for updating control tints, or computing text rectangles on Find, do not
apply filter effects. This is both a performance gain, and fixes an issue
with mismatched begin/end transparency layers.
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerContents):
Reviewed by Dan Bernstein.
Manual test with a filtered element as a descendant of an element with
opacity. Doing a Find is necessary to exercise the test.
* ManualTests/filters/opacity-above-filter.html: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@105019
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-01-13 Simon Fraser <simon.fraser@apple.com>
+
+ Unmatched transparency layer begin/end on a filtered element with an opacity ancestor
+ https://bugs.webkit.org/show_bug.cgi?id=76329
+
+ Reviewed by Dan Bernstein.
+
+ Manual test with a filtered element as a descendant of an element with
+ opacity. Doing a Find is necessary to exercise the test.
+
+ * ManualTests/filters/opacity-above-filter.html: Added.
+
2012-01-13 Eli Fidler <efidler@rim.com>
GCC compiler version is not detected properly for QNX qcc variant
--- /dev/null
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style>
+
+ .container {
+ opacity: 0.8;
+ margin: 10px;
+ }
+
+ .filtered {
+ width: 100px;
+ height: 100px;
+ background-color: blue;
+ -webkit-filter: blur(10px);
+ }
+ </style>
+</head>
+<body>
+ <a href="https://bugs.webkit.org/show_bug.cgi?id=76329">https://bugs.webkit.org/show_bug.cgi?id=76329</a>
+ <p>Open this test in Safari, and hit Command-F to Find. A debug build should not assert.</p>
+ <div class="container">
+ <div class="filtered box"></div>
+ </div>
+</body>
+</html>
+2012-01-14 Simon Fraser <simon.fraser@apple.com>
+
+ Unmatched transparency layer begin/end on a filtered element with an opacity ancestor
+ https://bugs.webkit.org/show_bug.cgi?id=76329
+
+ Reviewed by Dan Bernstein.
+
+ When doing a paint with painting disabled on the GraphicsContext, as we do
+ for updating control tints, or computing text rectangles on Find, do not
+ apply filter effects. This is both a performance gain, and fixes an issue
+ with mismatched begin/end transparency layers.
+
+ Manual test:
+ ManualTests/filters/opacity-above-filter.html
+
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::paintLayerContents):
+
2012-01-13 Ojan Vafai <ojan@chromium.org>
Implement flex-align
beginTransparencyLayers(context, rootLayer, paintBehavior);
#if ENABLE(CSS_FILTERS)
- if (filterPainter.haveFilterEffect())
+ if (filterPainter.haveFilterEffect() && !context->paintingDisabled())
context = filterPainter.beginFilterEffect(this, context, transparencyClipBox(this, rootLayer, paintBehavior));
#endif
#if ENABLE(CSS_FILTERS)
// If the filter was not started yet, start it now, after the transparency layer was lazily created.
- if (filterPainter.haveFilterEffect() && !filterPainter.hasStartedFilterEffect())
+ if (filterPainter.haveFilterEffect() && !filterPainter.hasStartedFilterEffect() && !context->paintingDisabled())
context = filterPainter.beginFilterEffect(this, context, transparencyClipBox(this, rootLayer, paintBehavior));
#endif
// Set up the clip used when painting our children.