From 78b970a0a036f78cfd491553b49ffa00214f7a64 Mon Sep 17 00:00:00 2001 From: Maximilian Albert Date: Tue, 29 Jul 2008 14:51:39 +0000 Subject: Rename isLPEParam() to isDeletable(), create new class LPEKnotHolderEntity and make inheritance from it a bit less clumsy (bzr r6448) --- src/live_effects/effect.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/live_effects/effect.cpp') 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::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 >::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::iterator p = param_vector.begin(); p != param_vector.end(); ++p) { - (*p)->addKnotHolderEntities(knotholder, desktop, item); - } } void -- cgit v1.2.3