Skip to content

Commit a29b197

Browse files
committed
don't delete database objects when removing something from a layer
1 parent a30ca45 commit a29b197

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

tsd/src/tsd/core/Context.cpp

+15-14
Original file line numberDiff line numberDiff line change
@@ -261,34 +261,35 @@ LayerNodeRef Context::insertChildTransformNode(
261261
return inst;
262262
}
263263

264-
LayerNodeRef Context::insertChildObjectNode(LayerNodeRef parent,
265-
anari::DataType type,
266-
size_t idx,
267-
const char *name)
264+
LayerNodeRef Context::insertChildObjectNode(
265+
LayerNodeRef parent, anari::DataType type, size_t idx, const char *name)
268266
{
269267
auto inst = parent->insert_last_child(tsd::utility::Any{type, idx});
270268
(*inst)->name = name;
271269
signalLayerChange();
272270
return inst;
273271
}
274272

275-
void Context::removeInstancedObject(LayerNodeRef obj)
273+
void Context::removeInstancedObject(
274+
LayerNodeRef obj, bool deleteReferencedObjects)
276275
{
277276
if (obj->isRoot())
278277
return;
279278

280-
std::vector<LayerNodeRef> objects;
281-
defaultLayer()->traverse(obj, [&](auto &node, int level) {
282-
if (node.isLeaf())
283-
objects.push_back(defaultLayer()->at(node.index()));
284-
return true;
285-
});
279+
if (deleteReferencedObjects) {
280+
std::vector<LayerNodeRef> objects;
286281

287-
for (auto &o : objects)
288-
removeObject(o->value().value);
282+
defaultLayer()->traverse(obj, [&](auto &node, int level) {
283+
if (node.isLeaf())
284+
objects.push_back(defaultLayer()->at(node.index()));
285+
return true;
286+
});
289287

290-
defaultLayer()->erase(obj);
288+
for (auto &o : objects)
289+
removeObject(o->value().value);
290+
}
291291

292+
defaultLayer()->erase(obj);
292293
signalLayerChange();
293294
}
294295

tsd/src/tsd/core/Context.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ struct Context
119119

120120
// Remove nodes //
121121

122-
void removeInstancedObject(LayerNodeRef obj);
122+
void removeInstancedObject(
123+
LayerNodeRef obj, bool deleteReferencedObjects = false);
123124

124125
// Indicate changes occurred //
125126

0 commit comments

Comments
 (0)