diff options
-rw-r--r-- | src/quick3d/imports/render/qt3dquick3drenderplugin.cpp | 2 | ||||
-rw-r--r-- | src/render/lights/qabstractlight.cpp | 8 | ||||
-rw-r--r-- | src/render/lights/qabstractlight.h | 3 | ||||
-rw-r--r-- | src/render/lights/qabstractlight_p.h | 2 | ||||
-rw-r--r-- | tests/auto/render/qabstractlight/tst_qabstractlight.cpp | 19 |
5 files changed, 19 insertions, 15 deletions
diff --git a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp index 20cad743f..3d0324afd 100644 --- a/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp +++ b/src/quick3d/imports/render/qt3dquick3drenderplugin.cpp @@ -209,7 +209,7 @@ void Qt3DQuick3DRenderPlugin::registerTypes(const char *uri) qmlRegisterType<Qt3DRender::QLayerFilter>(uri, 2, 0, "LayerFilter"); // Lights - qmlRegisterType<Qt3DRender::QAbstractLight>(uri, 2, 0, "Light"); + qmlRegisterUncreatableType<Qt3DRender::QAbstractLight>(uri, 2, 0, "Light", QStringLiteral("Light is an abstract base class")); qmlRegisterType<Qt3DRender::QPointLight>(uri, 2, 0, "PointLight"); qmlRegisterType<Qt3DRender::QDirectionalLight>(uri, 2, 0, "DirectionalLight"); qmlRegisterType<Qt3DRender::QSpotLight>(uri, 2, 0, "SpotLight"); diff --git a/src/render/lights/qabstractlight.cpp b/src/render/lights/qabstractlight.cpp index 203b99888..87aa6a633 100644 --- a/src/render/lights/qabstractlight.cpp +++ b/src/render/lights/qabstractlight.cpp @@ -75,14 +75,6 @@ void QAbstractLight::copy(const QNode *ref) \inmodule Qt3DRender */ -/*! - * Constructs a new QAbstractLight with the given \a parent. - */ -QAbstractLight::QAbstractLight(Qt3DCore::QNode *parent) : - QShaderData(*new QAbstractLightPrivate(PointLight), parent) -{ -} - /*! \internal */ QAbstractLight::QAbstractLight(QAbstractLightPrivate &dd, QNode *parent) : QShaderData(dd, parent) diff --git a/src/render/lights/qabstractlight.h b/src/render/lights/qabstractlight.h index cf456f057..c94ce0af7 100644 --- a/src/render/lights/qabstractlight.h +++ b/src/render/lights/qabstractlight.h @@ -67,8 +67,6 @@ public : }; Q_ENUM(Type) - explicit QAbstractLight(Qt3DCore::QNode *parent = Q_NULLPTR); - Type type() const; QColor color() const; float intensity() const; @@ -87,7 +85,6 @@ Q_SIGNALS: private: Q_DECLARE_PRIVATE(QAbstractLight) - QT3D_CLONEABLE(QAbstractLight) }; } // namespace Qt3DRender diff --git a/src/render/lights/qabstractlight_p.h b/src/render/lights/qabstractlight_p.h index 3f3b4cc0d..d605951ac 100644 --- a/src/render/lights/qabstractlight_p.h +++ b/src/render/lights/qabstractlight_p.h @@ -59,7 +59,7 @@ namespace Qt3DRender { class QAbstractLight; -class QAbstractLightPrivate : public QShaderDataPrivate +class Q_AUTOTEST_EXPORT QAbstractLightPrivate : public QShaderDataPrivate { public: QAbstractLightPrivate(QAbstractLight::Type type); diff --git a/tests/auto/render/qabstractlight/tst_qabstractlight.cpp b/tests/auto/render/qabstractlight/tst_qabstractlight.cpp index 552a15a48..d8452a461 100644 --- a/tests/auto/render/qabstractlight/tst_qabstractlight.cpp +++ b/tests/auto/render/qabstractlight/tst_qabstractlight.cpp @@ -31,12 +31,27 @@ #include <Qt3DCore/private/qscene_p.h> #include <Qt3DRender/qabstractlight.h> +#include <Qt3DRender/private/qabstractlight_p.h> #include <Qt3DRender/qpointlight.h> #include <Qt3DRender/qdirectionallight.h> #include <Qt3DRender/qspotlight.h> #include "testpostmanarbiter.h" +class DummyLight : public Qt3DRender::QAbstractLight +{ + Q_OBJECT + +public: + explicit DummyLight(Qt3DCore::QNode *parent = Q_NULLPTR) + : QAbstractLight(*new Qt3DRender::QAbstractLightPrivate(QAbstractLight::PointLight), parent) + {} + +private: + QT3D_CLONEABLE(DummyLight) +}; + + // We need to call QNode::clone which is protected // So we sublcass QNode instead of QObject class tst_QAbstractLight: public Qt3DCore::QNode @@ -52,7 +67,7 @@ private Q_SLOTS: void checkLightCloning() { - Qt3DRender::QAbstractLight light; + DummyLight light; light.setColor(Qt::red); light.setIntensity(0.5f); @@ -118,7 +133,7 @@ private Q_SLOTS: void checkLightPropertyUpdates() { - QScopedPointer<Qt3DRender::QAbstractLight> light(new Qt3DRender::QAbstractLight); + QScopedPointer<Qt3DRender::QAbstractLight> light(new DummyLight); TestArbiter lightArbiter(light.data()); light->setColor(Qt::red); |