diff options
| author | Raphael Rosch <launchpad@insaner.com> | 2016-04-14 18:19:03 +0000 |
|---|---|---|
| committer | insaner <launchpad@insaner.com> | 2016-04-14 18:19:03 +0000 |
| commit | 1dfba12bc394644560de7d2560aa03061237d0b8 (patch) | |
| tree | 7956c04251bf5943ef3b7e8c8a077674fb20001e /src/selection-chemistry.cpp | |
| parent | Fix c++11 flag when required on non-debian-based systems (diff) | |
| download | inkscape-1dfba12bc394644560de7d2560aa03061237d0b8.tar.gz inkscape-1dfba12bc394644560de7d2560aa03061237d0b8.zip | |
function to release object from group
Fixed bugs:
- https://launchpad.net/bugs/484041
(bzr r14845)
Diffstat (limited to 'src/selection-chemistry.cpp')
| -rw-r--r-- | src/selection-chemistry.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index e9a3af83a..7d32477a1 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -791,6 +791,38 @@ static gint clone_depth_descending(gconstpointer a, gconstpointer b) { return -1; } } + +void sp_selection_ungroup_pop_selection(Inkscape::Selection *selection, SPDesktop *desktop) +{ + if (selection->isEmpty()) { + selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("<b>No objects selected</b> to pop out of group.")); + return; + } + std::vector<SPItem*> selection_list = selection->itemList(); + + std::vector<SPItem*>::const_iterator item = selection_list.begin(); // leaving this because it will be useful for + // future implementation of complex pop ungrouping + SPItem *obj = *item; + SPItem *parent_group = static_cast<SPItem*>(obj->parent); + if (!SP_IS_GROUP(parent_group) || SP_IS_LAYER(parent_group)) { + desktop->messageStack()->flash(Inkscape::WARNING_MESSAGE, _("Selection <b>not in a group</b>.")); + return; + } + if (parent_group->firstChild()->getNext() == NULL) { + std::vector<SPItem*> children; + sp_item_group_ungroup(static_cast<SPGroup*>(parent_group), children, false); + } + else { + sp_selection_to_next_layer(desktop, 1); // suppress done + } + + parent_group->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + + DocumentUndo::done(selection->layers()->getDocument(), SP_VERB_SELECTION_UNGROUP_POP_SELECTION, + _("Pop selection from group")); + +} + void sp_selection_ungroup(Inkscape::Selection *selection, SPDesktop *desktop) { |
