diff options
Diffstat (limited to 'src/live_effects/effect.cpp')
| -rw-r--r-- | src/live_effects/effect.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index c4bbc31e1..467b1417d 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -425,6 +425,21 @@ Effect::addHandles(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item) { using namespace Inkscape::LivePathEffect; // add handles provided by the effect itself + addKnotHolderEntities(knotholder, desktop, item); + + // add handles provided by the effect's parameters (if any) + for (std::vector<Parameter *>::iterator p = param_vector.begin(); p != param_vector.end(); ++p) { + (*p)->addKnotHolderEntities(knotholder, desktop, item); + } +} + +void +Effect::addKnotHolderEntities(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item) { + // TODO: The entities in kh_entity_vector are already instantiated during the call + // to registerKnotHolderHandle(), but they are recreated here. Also, we must not + // delete them when the knotholder is destroyed, whence the clumsy function + // isDeletable(). If we could create entities of different classes dynamically, + // this would be much nicer. How to do this? std::vector<std::pair<KnotHolderEntity*, const char*> >::iterator i; for (i = kh_entity_vector.begin(); i != kh_entity_vector.end(); ++i) { KnotHolderEntity *entity = i->first; @@ -433,11 +448,6 @@ Effect::addHandles(KnotHolder *knotholder, SPDesktop *desktop, SPItem *item) { entity->create(desktop, item, knotholder, descr); knotholder->add(entity); } - - // add handles provided by the effect's parameters (if any) - for (std::vector<Parameter *>::iterator p = param_vector.begin(); p != param_vector.end(); ++p) { - (*p)->addKnotHolderEntities(knotholder, desktop, item); - } } void |
