From e6fb3530bee1ba272d7399f26634b27a335798cb Mon Sep 17 00:00:00 2001 From: Jabiertxo Arraiza Cenoz Date: Thu, 7 Dec 2017 11:02:44 +0100 Subject: This commit: *Allow boolops operation with non paths converting them to path first *Allow convert to stroke non paths converting previously to paths *Allow combine with use elements converting it to paths first *Allow convert to curves use/clone elements converting to curves --- src/path-chemistry.cpp | 15 +++++---------- src/verbs.cpp | 7 +++++++ 2 files changed, 12 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index b824d15c7..9ad6c8c76 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -55,7 +55,7 @@ ObjectSet::combine(bool skip_undo) { //Inkscape::Selection *selection = desktop->getSelection(); SPDocument *doc = document(); - + unlinkRecursive(true); std::vector items_copy(items().begin(), items().end()); if (items_copy.size() < 1) { @@ -299,14 +299,14 @@ void ObjectSet::toCurves(bool skip_undo) desktop()->getMessageStack()->flash(Inkscape::WARNING_MESSAGE, _("Select object(s) to convert to path.")); return; } - + bool did = false; if (desktop()) { desktop()->messageStack()->flash(Inkscape::IMMEDIATE_MESSAGE, _("Converting objects to paths...")); // set "busy" cursor desktop()->setWaitingCursor(); } - + unlinkRecursive(true); std::vector selected(items().begin(), items().end()); std::vector to_select; clear(); @@ -337,7 +337,7 @@ void ObjectSet::toLPEItems() if (isEmpty()) { return; } - + unlinkRecursive(true); std::vector selected(items().begin(), items().end()); std::vector to_select; clear(); @@ -366,12 +366,7 @@ sp_item_list_to_curves(const std::vector &items, std::vector& { continue; } - //TODO: decide if we want to unlink clones or not, for now keep previous functionality retaining clones as is - SPUse *use = dynamic_cast(item); - if (use) { - continue; - } - + SPPath *path = dynamic_cast(item); if (path && !path->_curve_before_lpe) { // remove connector attributes diff --git a/src/verbs.cpp b/src/verbs.cpp index f01a3c79c..dc378de7c 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -1125,21 +1125,27 @@ void SelectionVerb::perform(SPAction *action, void *data) bool handled = true; switch (reinterpret_cast(data)) { case SP_VERB_SELECTION_UNION: + selection->toCurves(true); selection->pathUnion(); break; case SP_VERB_SELECTION_INTERSECT: + selection->toCurves(true); selection->pathIntersect(); break; case SP_VERB_SELECTION_DIFF: + selection->toCurves(true); selection->pathDiff(); break; case SP_VERB_SELECTION_SYMDIFF: + selection->toCurves(true); selection->pathSymDiff(); break; case SP_VERB_SELECTION_CUT: + selection->toCurves(true); selection->pathCut(); break; case SP_VERB_SELECTION_SLICE: + selection->toCurves(true); selection->pathSlice(); break; case SP_VERB_SELECTION_GROW: @@ -1253,6 +1259,7 @@ void SelectionVerb::perform(SPAction *action, void *data) tools_switch(dt, TOOLS_NODES); break; case SP_VERB_SELECTION_OUTLINE: + selection->toCurves(true); sp_selected_path_outline(dt); break; case SP_VERB_SELECTION_OUTLINE_LEGACY: -- cgit v1.2.3