diff options
Diffstat (limited to 'src/quick3d/qdeclarativeitem3d.cpp')
-rw-r--r-- | src/quick3d/qdeclarativeitem3d.cpp | 12 |
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) { |