summaryrefslogtreecommitdiffstats
path: root/src/display/drawing-group.cpp
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-10-23 09:22:18 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-10-23 09:22:18 +0000
commitca75d29815a7d6548227fd2b5fb4f084d3ade2da (patch)
tree6eb55edf6efe3de27eca7c3e430f7e5b83dc4856 /src/display/drawing-group.cpp
parentSmall update for Hungarian translation (diff)
downloadinkscape-ca75d29815a7d6548227fd2b5fb4f084d3ade2da.tar.gz
inkscape-ca75d29815a7d6548227fd2b5fb4f084d3ade2da.zip
Fix isolation issues
Diffstat (limited to 'src/display/drawing-group.cpp')
-rw-r--r--src/display/drawing-group.cpp23
1 files changed, 4 insertions, 19 deletions
diff --git a/src/display/drawing-group.cpp b/src/display/drawing-group.cpp
index 337a6bcd9..e2fb26581 100644
--- a/src/display/drawing-group.cpp
+++ b/src/display/drawing-group.cpp
@@ -93,20 +93,11 @@ DrawingGroup::_updateItem(Geom::IntRect const &area, UpdateContext const &ctx, u
unsigned
DrawingGroup::_renderItem(DrawingContext &dc, Geom::IntRect const &area, unsigned flags, DrawingItem *stop_at)
{
- bool isolated = false;
- if (!parent() || _isolation == SP_CSS_ISOLATION_ISOLATE || _mix_blend_mode) {
- isolated = true;
- }
- int device_scale = dc.surface()->device_scale();
- DrawingSurface intermediate(area, device_scale);
- DrawingContext ict(intermediate);
- ict.setOperator(CAIRO_OPERATOR_OVER);
-
if (stop_at == nullptr) {
// normal rendering
for (auto &i : _children) {
i.setAntialiasing(_antialias);
- i.render(isolated ? ict : dc, area, flags, stop_at);
+ i.render(dc, area, flags, stop_at);
}
} else {
// background rendering
@@ -116,20 +107,14 @@ DrawingGroup::_renderItem(DrawingContext &dc, Geom::IntRect const &area, unsigne
if (i.isAncestorOf(stop_at)) {
// render its ancestors without masks, opacity or filters
i.setAntialiasing(_antialias);
- i.render(isolated ? ict : dc, area, flags | RENDER_FILTER_BACKGROUND, stop_at);
- break;
+ i.render(dc, area, flags | RENDER_FILTER_BACKGROUND, stop_at);
+ return RENDER_OK;
} else {
i.setAntialiasing(_antialias);
- i.render(isolated ? ict : dc, area, flags, stop_at);
+ i.render(dc, area, flags, stop_at);
}
}
}
- if (isolated) {
- dc.rectangle(area);
- dc.setSource(&intermediate);
- dc.setOperator(ink_css_blend_to_cairo_operator(_mix_blend_mode));
- dc.fill();
- }
return RENDER_OK;
}