summaryrefslogtreecommitdiffstats
path: root/src/sp-item-group.cpp
diff options
context:
space:
mode:
authorAlvin Penner <penner@vaxxine.com>2014-11-15 12:52:51 +0000
committerapenner <penner@vaxxine.com>2014-11-15 12:52:51 +0000
commit510c80b1b2d9a4ee700bd152d320c6963bccd358 (patch)
tree463c0831d3dd885ba267be279439b8df9f7c381e /src/sp-item-group.cpp
parentAdd inverse subdivision chamfer to fillet chamfer LPE, feature sugested by Iv... (diff)
downloadinkscape-510c80b1b2d9a4ee700bd152d320c6963bccd358.tar.gz
inkscape-510c80b1b2d9a4ee700bd152d320c6963bccd358.zip
scale symbols when changing document units (Bug 1365451)
Fixed bugs: - https://launchpad.net/bugs/1365451 (bzr r13709)
Diffstat (limited to 'src/sp-item-group.cpp')
-rw-r--r--src/sp-item-group.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp
index 613ace5c1..992bca631 100644
--- a/src/sp-item-group.cpp
+++ b/src/sp-item-group.cpp
@@ -662,8 +662,13 @@ void SPGroup::scaleChildItemsRec(Geom::Scale const &sc, Geom::Point const &p, bo
{
if ( hasChildren() ) {
for (SPObject *o = firstChild() ; o ; o = o->getNext() ) {
- SPItem *item = dynamic_cast<SPItem *>(o);
- if ( item ) {
+ if ( SPDefs *defs = dynamic_cast<SPDefs *>(o) ) { // select symbols from defs, ignore clips, masks, patterns
+ for (SPObject *defschild = defs->firstChild() ; defschild ; defschild = defschild->getNext() ) {
+ SPGroup *defsgroup = dynamic_cast<SPGroup *>(defschild);
+ if (defsgroup)
+ defsgroup->scaleChildItemsRec(sc, p, false);
+ }
+ } else if ( SPItem *item = dynamic_cast<SPItem *>(o) ) {
SPGroup *group = dynamic_cast<SPGroup *>(item);
if (group && !dynamic_cast<SPBox3D *>(item)) {
/* Using recursion breaks clipping because transforms are applied