From ca75d29815a7d6548227fd2b5fb4f084d3ade2da Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Wed, 23 Oct 2019 11:22:18 +0200 Subject: Fix isolation issues --- src/display/drawing-group.cpp | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) (limited to 'src/display/drawing-group.cpp') 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; } -- cgit v1.2.3