diff options
| author | Marc Jeanmougin <marc@jeanmougin.fr> | 2015-05-02 01:14:58 +0000 |
|---|---|---|
| committer | Marc Jeanmougin <marcjeanmougin@free.fr> | 2015-05-02 01:14:58 +0000 |
| commit | fee6f2b2bd4ade26b957f91de04d45c38541b05a (patch) | |
| tree | 81bfb9bd4274994fe8947963aabb3a9f6a470f7d /src/sp-item-group.cpp | |
| parent | Fix segfault due to an infinite recursion (due to a typo) (diff) | |
| download | inkscape-fee6f2b2bd4ade26b957f91de04d45c38541b05a.tar.gz inkscape-fee6f2b2bd4ade26b957f91de04d45c38541b05a.zip | |
fixed selection after ungroup
fixed some regression with displacement of clones of clones when ungrouping (test case: icons.svg)
(bzr r14084)
Diffstat (limited to 'src/sp-item-group.cpp')
| -rw-r--r-- | src/sp-item-group.cpp | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index 9bd42665d..72cd5d7fa 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -375,7 +375,7 @@ void sp_item_group_ungroup_handle_clones(SPItem *parent, Geom::Affine const g) { for(std::list<SPObject*>::const_iterator refd=parent->hrefList.begin();refd!=parent->hrefList.end();refd++){ SPItem *citem = dynamic_cast<SPItem *>(*refd); - if (citem) { + if (citem && !citem->cloned) { SPUse *useitem = dynamic_cast<SPUse *>(citem); if (useitem && useitem->get_original() == parent) { Geom::Affine ctrans; @@ -541,15 +541,12 @@ sp_item_group_ungroup (SPGroup *group, std::vector<SPItem*> &children, bool do_d if (item) { item->doWriteTransform(repr, item->transform, NULL, false); + children.insert(children.begin(),item); } else { g_assert_not_reached(); } Inkscape::GC::release(repr); - if (!children.empty() && item) { - children.insert(children.begin(),item); - } - items = g_slist_remove (items, items->data); } |
