summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp')
-rw-r--r--src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp
index 1626554ea..b99f6ae75 100644
--- a/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp
+++ b/src/quick3d/quick3d/items/quick3dnodeinstantiator.cpp
@@ -98,7 +98,8 @@ Quick3DNodeInstantiatorPrivate::Quick3DNodeInstantiatorPrivate()
Quick3DNodeInstantiatorPrivate::~Quick3DNodeInstantiatorPrivate()
{
- qDeleteAll(m_objects);
+ if (m_ownModel)
+ delete m_instanceModel;
}
void Quick3DNodeInstantiatorPrivate::clear()
@@ -244,6 +245,7 @@ void Quick3DNodeInstantiatorPrivate::makeModel()
Quick3DNodeInstantiator::Quick3DNodeInstantiator(QNode *parent)
: QNode(*new Quick3DNodeInstantiatorPrivate, parent)
{
+ connect(this, &QNode::parentChanged, this, &Quick3DNodeInstantiator::onParentChanged);
}
/*!
@@ -500,6 +502,17 @@ void Quick3DNodeInstantiator::componentComplete()
}
}
+/*!
+ \internal
+*/
+void Quick3DNodeInstantiator::onParentChanged(QObject *parent)
+{
+ Q_D(const Quick3DNodeInstantiator);
+ auto parentNode = static_cast<QNode *>(parent);
+ for (auto obj : d->m_objects)
+ static_cast<QNode *>(obj.data())->setParent(parentNode);
+}
+
// TODO: Avoid cloning here
//void Quick3DNodeInstantiator::copy(const QNode *ref)
//{