summaryrefslogtreecommitdiffstats
path: root/src/object-set.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/object-set.cpp')
-rw-r--r--src/object-set.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/object-set.cpp b/src/object-set.cpp
index 8fcb4215e..36ddac350 100644
--- a/src/object-set.cpp
+++ b/src/object-set.cpp
@@ -104,14 +104,18 @@ void ObjectSet::_removeDescendantsFromSet(SPObject *object) {
}
}
-void ObjectSet::_remove(SPObject *object) {
+void ObjectSet::_disconnect(SPObject *object) {
_releaseConnections[object].disconnect();
_releaseConnections.erase(object);
- _container.get<hashed>().erase(object);
_remove3DBoxesRecursively(object);
_releaseSignals(object);
}
+void ObjectSet::_remove(SPObject *object) {
+ _disconnect(object);
+ _container.get<hashed>().erase(object);
+}
+
void ObjectSet::_add(SPObject *object) {
_releaseConnections[object] = object->connectRelease(sigc::hide_return(sigc::mem_fun(*this, &ObjectSet::remove)));
_container.push_back(object);
@@ -120,9 +124,9 @@ void ObjectSet::_add(SPObject *object) {
}
void ObjectSet::_clear() {
- for (auto object: _container) {
- _remove(object);
- }
+ for (auto object: _container)
+ _disconnect(object);
+ _container.clear();
}
SPObject *ObjectSet::_getMutualAncestor(SPObject *object) {