diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-10-23 09:22:18 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-10-23 09:22:18 +0000 |
| commit | ca75d29815a7d6548227fd2b5fb4f084d3ade2da (patch) | |
| tree | 6eb55edf6efe3de27eca7c3e430f7e5b83dc4856 /src/display/drawing-group.cpp | |
| parent | Small update for Hungarian translation (diff) | |
| download | inkscape-ca75d29815a7d6548227fd2b5fb4f084d3ade2da.tar.gz inkscape-ca75d29815a7d6548227fd2b5fb4f084d3ade2da.zip | |
Fix isolation issues
Diffstat (limited to 'src/display/drawing-group.cpp')
| -rw-r--r-- | src/display/drawing-group.cpp | 23 |
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; } |
