diff options
Diffstat (limited to 'src/sp-item.cpp')
| -rw-r--r-- | src/sp-item.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/sp-item.cpp b/src/sp-item.cpp index 368f8896c..4f3c7d283 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -1373,7 +1373,7 @@ void SPItem::adjust_paint_recursive (Geom::Affine advertized_transform, Geom::Af // Within text, we do not fork gradients, and so must not recurse to avoid double compensation; // also we do not recurse into clones, because a clone's child is the ghost of its original - // we must not touch it - if (!(this && (dynamic_cast<SPText *>(this) || dynamic_cast<SPUse *>(this)))) { + if (!(dynamic_cast<SPText *>(this) || dynamic_cast<SPUse *>(this))) { for (auto& o: children) { SPItem *item = dynamic_cast<SPItem *>(&o); if (item) { @@ -1401,7 +1401,6 @@ void SPItem::adjust_livepatheffect (Geom::Affine const &postmul, bool set) SPLPEItem *lpeitem = dynamic_cast<SPLPEItem *>(this); if ( lpeitem && lpeitem->hasPathEffect() ) { lpeitem->forkPathEffectsIfNecessary(); - // now that all LPEs are forked_if_necessary, we can apply the transform PathEffectList effect_list = lpeitem->getEffectList(); for (PathEffectList::iterator it = effect_list.begin(); it != effect_list.end(); ++it) @@ -1496,6 +1495,10 @@ void SPItem::doWriteTransform(Inkscape::XML::Node *repr, Geom::Affine const &tra freeze_stroke_width_recursive(false); } } else { + SPLPEItem * lpeitem = SP_LPE_ITEM(this); + if (lpeitem && lpeitem->hasPathEffectRecursive()) { + lpeitem->adjust_livepatheffect(transform_attr); + } if (freeze_stroke_width) { freeze_stroke_width_recursive(false); if (compensate) { |
