summaryrefslogtreecommitdiffstats
path: root/src/object/sp-path.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/object/sp-path.cpp')
-rw-r--r--src/object/sp-path.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/object/sp-path.cpp b/src/object/sp-path.cpp
index cf8c0ad10..d951d1738 100644
--- a/src/object/sp-path.cpp
+++ b/src/object/sp-path.cpp
@@ -326,17 +326,21 @@ Geom::Affine SPPath::set_transform(Geom::Affine const &transform) {
if (!_curve) { // 0 nodes, nothing to transform
return Geom::identity();
}
+ // Only set transform with proportional scaling
+ if (!transform.withoutTranslation().isUniformScale()) {
+ // Adjust livepatheffect
+ if (hasPathEffect() && pathEffectsEnabled()) {
+ this->adjust_livepatheffect(transform.inverse());
+ return transform;
+ }
+ }
+ // TODO: try to remove CLONE_ORIGINAL from here
// Transform the original-d path if this is a valid LPE this, other else the (ordinary) path
if (_curve_before_lpe && hasPathEffectRecursive()) {
- if (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL) ||
- this->hasPathEffectOfType(Inkscape::LivePathEffect::BEND_PATH) ||
- this->hasPathEffectOfType(Inkscape::LivePathEffect::POWERCLIP) ||
- this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_MANY) ||
- this->hasPathEffectOfType(Inkscape::LivePathEffect::FILL_BETWEEN_STROKES) )
+ if (this->hasPathEffectOfType(Inkscape::LivePathEffect::CLONE_ORIGINAL))
{
// if path has this LPE applied, don't write the transform to the pathdata, but write it 'unoptimized'
// also if the effect is type BEND PATH to fix bug #179842
- this->adjust_livepatheffect(transform);
return transform;
} else {
_curve_before_lpe->transform(transform);