diff options
Diffstat (limited to 'drawinglayer/source/processor2d/vclpixelprocessor2d.cxx')
-rw-r--r-- | drawinglayer/source/processor2d/vclpixelprocessor2d.cxx | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx index 47f39e87bf8b..393c40c90842 100644 --- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx @@ -1160,10 +1160,18 @@ void VclPixelProcessor2D::processShadowPrimitive2D(const primitive2d::ShadowPrim impBufferDevice aBufferDevice(*mpOutputDevice, aRange); if (aBufferDevice.isVisible()) { + // Process children which don't want blur. + primitive2d::Primitive2DContainer aContainer; + rCandidate.get2DDecompositionWithoutBlur(aContainer, getViewInformation2D()); + process(aContainer); + + // Process children which want blur. OutputDevice* pLastOutputDevice = mpOutputDevice; mpOutputDevice = &aBufferDevice.getContent(); - process(rCandidate); + aContainer.clear(); + rCandidate.get2DDecompositionWithBlur(aContainer, getViewInformation2D()); + process(aContainer); const tools::Rectangle aRect(static_cast<tools::Long>(std::floor(aRange.getMinX())), static_cast<tools::Long>(std::floor(aRange.getMinY())), |