From 6586a50de3ad7f47a895f904ff66cc6613d62124 Mon Sep 17 00:00:00 2001 From: Jabiertxof Date: Wed, 7 Dec 2016 23:17:49 +0100 Subject: Improve measure line to allow similar LPE (bzr r15310) --- src/live_effects/lpe-measure-line.cpp | 5 ++++- src/sp-lpe-item.cpp | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/live_effects/lpe-measure-line.cpp b/src/live_effects/lpe-measure-line.cpp index 8b73781b5..45076d625 100644 --- a/src/live_effects/lpe-measure-line.cpp +++ b/src/live_effects/lpe-measure-line.cpp @@ -686,7 +686,6 @@ LPEMeasureLine::doBeforeEffect (SPLPEItem const* lpeitem) } } - void LPEMeasureLine::doOnVisibilityToggled(SPLPEItem const* /*lpeitem*/) { @@ -696,6 +695,7 @@ LPEMeasureLine::doOnVisibilityToggled(SPLPEItem const* /*lpeitem*/) void LPEMeasureLine::doOnRemove (SPLPEItem const* /*lpeitem*/) { + //unset "erase_extra_objects" hook on sp-lpe-item.cpp if (!erase_extra_objects) { processObjects(LPE_TO_OBJECTS); elements.clear(); @@ -711,6 +711,9 @@ LPEMeasureLine::processObjects(LpeAction lpe_action) for (std::vector::iterator el_it = elements.begin(); el_it != elements.end(); ++el_it) { const char * id = *el_it; + if (!id || strlen(id) == 0) { + return; + } Inkscape::URI SVGElem_uri(Glib::ustring("#").append(id).c_str()); Inkscape::URIReference* SVGElemRef = new Inkscape::URIReference(desktop->doc()); SVGElemRef->attach(SVGElem_uri); diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index 872a88289..e2f61bfb5 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -125,7 +125,8 @@ void SPLPEItem::set(unsigned int key, gchar const* value) { { if (!value) { LivePathEffectObject *lpeobj = (*it)->lpeobject; - if (Inkscape::LivePathEffect::LPEMeasureLine * lpe = dynamic_cast(lpeobj->get_lpe())) { + Inkscape::LivePathEffect::Effect * lpe = lpeobj->get_lpe(); + if (dynamic_cast(lpe)){ lpe->doOnRemove(this); } } -- cgit v1.2.3