summaryrefslogtreecommitdiffstats
path: root/src/sp-item-group.cpp
diff options
context:
space:
mode:
authorAlvin Penner <penner@vaxxine.com>2014-09-19 19:10:08 +0000
committerapenner <penner@vaxxine.com>2014-09-19 19:10:08 +0000
commitb91f59f850cf88b2c5a4579cbb4a515189f96b24 (patch)
tree2f63804ffa663c916ed497bc27b0b40693ee27c0 /src/sp-item-group.cpp
parentFix build for fink on OS X 10.9 by including unistd.h (diff)
downloadinkscape-b91f59f850cf88b2c5a4579cbb4a515189f96b24.tar.gz
inkscape-b91f59f850cf88b2c5a4579cbb4a515189f96b24.zip
scale clip or mask upon unit change (Bug 1287288)
Fixed bugs: - https://launchpad.net/bugs/1287288 (bzr r13561)
Diffstat (limited to 'src/sp-item-group.cpp')
-rw-r--r--src/sp-item-group.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp
index 5936cfbe5..a24056630 100644
--- a/src/sp-item-group.cpp
+++ b/src/sp-item-group.cpp
@@ -677,6 +677,18 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo
item->doWriteTransform(item->getRepr(), tAff, NULL, true);
} else {
// used for other import
+ SPItem *item = NULL;
+ if (SP_ITEM(o)->clip_ref->getObject()) {
+ item = SP_ITEM(SP_ITEM(o)->clip_ref->getObject()->firstChild());
+ } else if (SP_ITEM(o)->mask_ref->getObject()) {
+ item = SP_ITEM(SP_ITEM(o)->mask_ref->getObject()->firstChild());
+ }
+ if (item != NULL) {
+ Geom::Affine tdoc2dt = Geom::Scale(1, -1) * Geom::Translate(p); // re-create doc2dt()
+ Geom::Affine ti2doc = SP_ITEM(o)->i2doc_affine();
+ item->set_i2d_affine(ti2doc * sc * ti2doc.inverse() * tdoc2dt);
+ item->doWriteTransform(item->getRepr(), item->transform, NULL, true);
+ }
SP_GROUP(o)->scaleChildItemsRec(sc, p, false);
}
} else {