diff options
Diffstat (limited to 'src/gui/PatchCanvas.cpp')
-rw-r--r-- | src/gui/PatchCanvas.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/gui/PatchCanvas.cpp b/src/gui/PatchCanvas.cpp index acbd8efe..0d444ad3 100644 --- a/src/gui/PatchCanvas.cpp +++ b/src/gui/PatchCanvas.cpp @@ -379,10 +379,20 @@ PatchCanvas::remove_port(SharedPtr<PortModel> pm) { Views::iterator i = _views.find(pm); + // Port on this patch if (i != _views.end()) { - remove_item(i->second); _views.erase(i); + bool ret = remove_item(i->second); + if (!ret) + cerr << "WARNING: Failed to remove port item: " << pm->path() << endl; + i->second.reset(); + + } else { + SharedPtr<NodeModule> module = PtrCast<NodeModule>(_views[pm->parent()]); + module->remove_port(pm); } + + assert(_views.find(pm) == _views.end()); } |