summaryrefslogtreecommitdiffstats
path: root/src/selection-chemistry.cpp
diff options
context:
space:
mode:
authorDiederik van Lierop <mail@diedenrezi.nl>2014-08-16 20:54:37 +0000
committerDiederik van Lierop <mail@diedenrezi.nl>2014-08-16 20:54:37 +0000
commit13db4e8d7c2250a8b5a88beca4a5800ef90b7f54 (patch)
treebe18f820e6b10c95d7e61e373388c9fd215845f5 /src/selection-chemistry.cpp
parentmemleak fix (Bug #1293827: LivePathEffect memory leak ) (diff)
downloadinkscape-13db4e8d7c2250a8b5a88beca4a5800ef90b7f54.tar.gz
inkscape-13db4e8d7c2250a8b5a88beca4a5800ef90b7f54.zip
Fix shift of transformation center on pasting
Fixed bugs: - https://launchpad.net/bugs/1247799 (bzr r13521)
Diffstat (limited to 'src/selection-chemistry.cpp')
-rw-r--r--src/selection-chemistry.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp
index 868a9d743..01ce20509 100644
--- a/src/selection-chemistry.cpp
+++ b/src/selection-chemistry.cpp
@@ -1466,7 +1466,7 @@ value of set_i2d==false is only used by seltrans when it's dragging objects live
that case, items are already in the new position, but the repr is in the old, and this function
then simply updates the repr from item->transform.
*/
-void sp_selection_apply_affine(Inkscape::Selection *selection, Geom::Affine const &affine, bool set_i2d, bool compensate)
+void sp_selection_apply_affine(Inkscape::Selection *selection, Geom::Affine const &affine, bool set_i2d, bool compensate, bool adjust_transf_center)
{
if (selection->isEmpty())
return;
@@ -1621,11 +1621,13 @@ void sp_selection_apply_affine(Inkscape::Selection *selection, Geom::Affine cons
item->doWriteTransform(item->getRepr(), item->transform, NULL, compensate);
}
- // if we're moving the actual object, not just updating the repr, we can transform the
- // center by the same matrix (only necessary for non-translations)
- if (set_i2d && item->isCenterSet() && !(affine.isTranslation() || affine.isIdentity())) {
- item->setCenter(old_center * affine);
- item->updateRepr();
+ if (adjust_transf_center) { // The transformation center should not be touched in case of pasting or importing, which is allowed by this if clause
+ // if we're moving the actual object, not just updating the repr, we can transform the
+ // center by the same matrix (only necessary for non-translations)
+ if (set_i2d && item->isCenterSet() && !(affine.isTranslation() || affine.isIdentity())) {
+ item->setCenter(old_center * affine);
+ item->updateRepr();
+ }
}
}
}