summaryrefslogtreecommitdiffstats
path: root/src/sp-item-group.cpp
diff options
context:
space:
mode:
authorAlvin Penner <penner@vaxxine.com>2015-02-19 16:47:03 +0000
committerapenner <penner@vaxxine.com>2015-02-19 16:47:03 +0000
commit709d05b70d2e284fd1594be23aaca6ae55e2abf2 (patch)
tree40041fa18aae5aa0d97aa9552ba3c8eb8a786c7b /src/sp-item-group.cpp
parenti18n (diff)
downloadinkscape-709d05b70d2e284fd1594be23aaca6ae55e2abf2.tar.gz
inkscape-709d05b70d2e284fd1594be23aaca6ae55e2abf2.zip
scale groups when changing document units. (Bug 1369197)
Fixed bugs: - https://launchpad.net/bugs/1369197 (bzr r13926)
Diffstat (limited to 'src/sp-item-group.cpp')
-rw-r--r--src/sp-item-group.cpp14
1 files changed, 4 insertions, 10 deletions
diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp
index 35840e01a..3c2053cb2 100644
--- a/src/sp-item-group.cpp
+++ b/src/sp-item-group.cpp
@@ -727,21 +727,16 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo
subItem = dynamic_cast<SPItem *>(item->clip_ref->getObject()->firstChild());
}
if (subItem != NULL) {
- Geom::Affine tdoc2dt = Geom::Scale(1, -1) * Geom::Translate(p); // re-create doc2dt()
- Geom::Affine ti2doc = item->i2doc_affine();
- subItem->set_i2d_affine(ti2doc * sc * ti2doc.inverse() * tdoc2dt);
- subItem->doWriteTransform(subItem->getRepr(), subItem->transform, NULL, true);
+ subItem->doWriteTransform(subItem->getRepr(), subItem->transform*sc, NULL, true);
}
subItem = NULL;
if (item->mask_ref->getObject()) {
subItem = dynamic_cast<SPItem *>(item->mask_ref->getObject()->firstChild());
}
if (subItem != NULL) {
- Geom::Affine tdoc2dt = Geom::Scale(1, -1) * Geom::Translate(p); // re-create doc2dt()
- Geom::Affine ti2doc = item->i2doc_affine();
- subItem->set_i2d_affine(ti2doc * sc * ti2doc.inverse() * tdoc2dt);
- subItem->doWriteTransform(item->getRepr(), item->transform, NULL, true);
+ subItem->doWriteTransform(subItem->getRepr(), subItem->transform*sc, NULL, true);
}
+ item->doWriteTransform(item->getRepr(), sc.inverse()*item->transform*sc, NULL, true);
group->scaleChildItemsRec(sc, p, false);
}
} else {
@@ -795,8 +790,7 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo
Geom::Affine move = final.inverse() * item->transform * final;
item->doWriteTransform(item->getRepr(), move, &move, true);
} else {
- item->set_i2d_affine(item->i2dt_affine() * final);
- item->doWriteTransform(item->getRepr(), item->transform, NULL, true);
+ item->doWriteTransform(item->getRepr(), item->transform*sc, NULL, true);
}
if (conn_type != NULL) {