summaryrefslogtreecommitdiffstats
path: root/src/display/drawing-item.cpp
diff options
context:
space:
mode:
authorsu_v <suv-sf@users.sourceforge.net>2013-02-13 18:36:57 +0000
committer~suv <suv-sf@users.sourceforge.net>2013-02-13 18:36:57 +0000
commit77b788bb1c5fa861a3f12c76ad3f17bc8edc35b8 (patch)
tree441f798cf2c8cb3a760c1ecf259f5faff356124c /src/display/drawing-item.cpp
parentchanges_2013_02_01b.patch (diff)
parentBuild. Adding unistd header (fixes compilation on Win32 with OpenSuse cross-c... (diff)
downloadinkscape-77b788bb1c5fa861a3f12c76ad3f17bc8edc35b8.tar.gz
inkscape-77b788bb1c5fa861a3f12c76ad3f17bc8edc35b8.zip
merge from trunk (r12122)
(bzr r11668.1.51)
Diffstat (limited to 'src/display/drawing-item.cpp')
-rw-r--r--src/display/drawing-item.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/display/drawing-item.cpp b/src/display/drawing-item.cpp
index 1e6e44d6f..80664d822 100644
--- a/src/display/drawing-item.cpp
+++ b/src/display/drawing-item.cpp
@@ -550,10 +550,12 @@ DrawingItem::render(DrawingContext &ct, Geom::IntRect const &area, unsigned flag
// for overlapping clip children. To fix this we use the SOURCE operator
// instead of the default OVER.
ict.setOperator(CAIRO_OPERATOR_SOURCE);
+ ict.paint();
if (_clip) {
+ ict.pushGroup();
_clip->clip(ict, *carea); // fixme: carea or area?
- } else {
- // if there is no clipping path, fill the entire surface with alpha = opacity.
+ ict.popGroupToSource();
+ ict.setOperator(CAIRO_OPERATOR_IN);
ict.paint();
}
ict.setOperator(CAIRO_OPERATOR_OVER); // reset back to default