From 756f98f26fd63b6db3f6197bff1e3fedcdea64d1 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 18 Dec 2010 21:21:19 +0000 Subject: Fix module removal. git-svn-id: http://svn.drobilla.net/lad/trunk/patchage@2769 a436a847-0d15-0410-975c-d299462d15a1 --- src/PatchageCanvas.cpp | 25 +++++++++++++++++++++++++ src/PatchageCanvas.hpp | 2 ++ 2 files changed, 27 insertions(+) (limited to 'src') diff --git a/src/PatchageCanvas.cpp b/src/PatchageCanvas.cpp index 7af0756..dbeaf22 100644 --- a/src/PatchageCanvas.cpp +++ b/src/PatchageCanvas.cpp @@ -182,6 +182,31 @@ PatchageCanvas::status_message(const string& msg) _app->status_msg(string("[Canvas] ").append(msg)); } +bool +PatchageCanvas::remove_item(boost::shared_ptr i) +{ + // Remove item from canvas + const bool ret = FlowCanvas::Canvas::remove_item(i); + if (!ret) + return ret; + + SharedPtr module = PtrCast(i); + if (!module) + return ret; + + // Remove module from cache + boost::shared_ptr io_module; + for (ModuleIndex::iterator i = _module_index.find(module->name()); + i != _module_index.end() && i->first == module->name(); ++i) { + if (i->second == module) { + _module_index.erase(i); + return true; + } + } + + return ret; +} + void PatchageCanvas::destroy() { diff --git a/src/PatchageCanvas.hpp b/src/PatchageCanvas.hpp index d46aef3..61321b7 100644 --- a/src/PatchageCanvas.hpp +++ b/src/PatchageCanvas.hpp @@ -64,6 +64,8 @@ public: add_item(module); } + bool remove_item(boost::shared_ptr i); + void destroy(); private: -- cgit v1.2.1