summaryrefslogtreecommitdiffstats
path: root/src/quick3d/qdeclarativeitem3d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick3d/qdeclarativeitem3d.cpp')
-rw-r--r--src/quick3d/qdeclarativeitem3d.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/quick3d/qdeclarativeitem3d.cpp b/src/quick3d/qdeclarativeitem3d.cpp
index 7141b550..86171dc3 100644
--- a/src/quick3d/qdeclarativeitem3d.cpp
+++ b/src/quick3d/qdeclarativeitem3d.cpp
@@ -1040,6 +1040,8 @@ void QDeclarativeItem3D::draw(QGLPainter *painter)
// Bail out if this item and its children have been disabled.
if (!d->isEnabled)
return;
+ if (!d->isInitialized)
+ initialize(painter);
int prevId = painter->objectPickId();
painter->setObjectPickId(d->objectPickId);
@@ -1163,6 +1165,16 @@ void QDeclarativeItem3D::initialize(QGLPainter *painter)
{
if (d->isInitialized) return;
+ if (!d->viewport)
+ {
+ if (QDeclarativeItem3D* parentItem =
+ qobject_cast<QDeclarativeItem3D*>(parent()))
+ {
+ d->viewport = parentItem->d->viewport;
+ Q_ASSERT(d->viewport);
+ }
+ }
+
d->objectPickId = d->viewport->registerPickableObject(this);
for (int index = 0; index < children().size(); ++index) {