summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorGiulio Camuffo <giulio.camuffo@kdab.com>2019-02-14 17:02:20 +0100
committerGiulio Camuffo <giulio.camuffo@kdab.com>2019-02-25 12:34:36 +0000
commit6cb3fa6f4d7b3a504bba063d964a8a5868559ba5 (patch)
treee3353d12174a8a2ad84b4ceb8ee705ef6900c372 /tests
parente1f81585c21582abe3b3d0c295b25ef4e3270c14 (diff)
Add a viewport property to QPickEvent
The new property will contain the viewport in which the input event originated. This is useful in cases where an entity with an ObjectPicker visible in multiple viewports wants to react differently based on which viewport was clicked. Change-Id: Ic5fb6393f3c3087cc3f54cd68c025d0e59ec2f20 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/render/objectpicker/tst_objectpicker.cpp6
-rw-r--r--tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp51
-rw-r--r--tests/auto/render/picking/tst_picking.cpp23
-rw-r--r--tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp9
4 files changed, 56 insertions, 33 deletions
diff --git a/tests/auto/render/objectpicker/tst_objectpicker.cpp b/tests/auto/render/objectpicker/tst_objectpicker.cpp
index 644849102..99b2af538 100644
--- a/tests/auto/render/objectpicker/tst_objectpicker.cpp
+++ b/tests/auto/render/objectpicker/tst_objectpicker.cpp
@@ -142,7 +142,7 @@ private Q_SLOTS:
Qt3DRender::QPickEventPtr event(new Qt3DRender::QPickEvent);
// WHEN
- objectPicker.onPressed(event);
+ objectPicker.onPressed(event, Qt3DCore::QNodeId());
// THEN
QCOMPARE(arbiter.events.count(), 1);
@@ -152,7 +152,7 @@ private Q_SLOTS:
arbiter.events.clear();
// WHEN
- objectPicker.onReleased(event);
+ objectPicker.onReleased(event, Qt3DCore::QNodeId());
// THEN
QCOMPARE(arbiter.events.count(), 1);
@@ -162,7 +162,7 @@ private Q_SLOTS:
arbiter.events.clear();
// WHEN
- objectPicker.onClicked(event);
+ objectPicker.onClicked(event, Qt3DCore::QNodeId());
// THEN
QCOMPARE(arbiter.events.count(), 1);
diff --git a/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp b/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp
index 5e51c8aa7..ad4d69d04 100644
--- a/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp
+++ b/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp
@@ -56,6 +56,7 @@
#include <Qt3DRender/private/loadbufferjob_p.h>
#include <Qt3DRender/private/buffermanager_p.h>
#include <Qt3DRender/private/geometryrenderermanager_p.h>
+#include <Qt3DRender/private/qobjectpicker_p.h>
#include <private/qpickevent_p.h>
@@ -783,11 +784,11 @@ private Q_SLOTS:
QCOMPARE(arbiter.events.count(), backAndFrontPicking ? 2 : 1);
Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "pressed");
- Qt3DRender::QPickEventPtr pickEvent = change->value().value<Qt3DRender::QPickEventPtr>();
- QVERIFY(pickEvent);
- QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.data())->m_entity.isNull());
+ Qt3DRender::QObjectPickerEvent pickEvent = change->value().value<Qt3DRender::QObjectPickerEvent>();
+ QVERIFY(pickEvent.event);
+ QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.event.data())->m_entity.isNull());
if (pickMethod == Qt3DRender::QPickingSettings::TrianglePicking)
- QVERIFY(pickEvent.dynamicCast<Qt3DRender::QPickTriangleEvent>());
+ QVERIFY(pickEvent.event.dynamicCast<Qt3DRender::QPickTriangleEvent>());
arbiter.events.clear();
@@ -804,11 +805,11 @@ private Q_SLOTS:
QCOMPARE(arbiter.events.count(), backAndFrontPicking ? 2 : 1);
change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "moved");
- pickEvent = change->value().value<Qt3DRender::QPickEventPtr>();
- QVERIFY(pickEvent);
- QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.data())->m_entity.isNull());
+ pickEvent = change->value().value<Qt3DRender::QObjectPickerEvent>();
+ QVERIFY(pickEvent.event);
+ QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.event.data())->m_entity.isNull());
if (pickMethod == Qt3DRender::QPickingSettings::TrianglePicking)
- QVERIFY(pickEvent.dynamicCast<Qt3DRender::QPickTriangleEvent>());
+ QVERIFY(pickEvent.event.dynamicCast<Qt3DRender::QPickTriangleEvent>());
arbiter.events.clear();
@@ -825,18 +826,18 @@ private Q_SLOTS:
QCOMPARE(arbiter.events.count(), 2);
change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "released");
- pickEvent = change->value().value<Qt3DRender::QPickEventPtr>();
- QVERIFY(pickEvent);
- QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.data())->m_entity.isNull());
+ pickEvent = change->value().value<Qt3DRender::QObjectPickerEvent>();
+ QVERIFY(pickEvent.event);
+ QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.event.data())->m_entity.isNull());
if (pickMethod == Qt3DRender::QPickingSettings::TrianglePicking)
- QVERIFY(pickEvent.dynamicCast<Qt3DRender::QPickTriangleEvent>());
+ QVERIFY(pickEvent.event.dynamicCast<Qt3DRender::QPickTriangleEvent>());
change = arbiter.events.last().staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "clicked");
- pickEvent = change->value().value<Qt3DRender::QPickEventPtr>();
- QVERIFY(pickEvent);
- QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.data())->m_entity.isNull());
+ pickEvent = change->value().value<Qt3DRender::QObjectPickerEvent>();
+ QVERIFY(pickEvent.event);
+ QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.event.data())->m_entity.isNull());
if (pickMethod == Qt3DRender::QPickingSettings::TrianglePicking)
- QVERIFY(pickEvent.dynamicCast<Qt3DRender::QPickTriangleEvent>());
+ QVERIFY(pickEvent.event.dynamicCast<Qt3DRender::QPickTriangleEvent>());
arbiter.events.clear();
@@ -912,10 +913,10 @@ private Q_SLOTS:
QCOMPARE(arbiter.events.count(), 1);
Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "pressed");
- Qt3DRender::QPickEventPtr pickEvent = change->value().value<Qt3DRender::QPickEventPtr>();
- QVERIFY(pickEvent);
- QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.data())->m_entity.isNull());
- QVERIFY(pickEvent.dynamicCast<Qt3DRender::QPickTriangleEvent>());
+ Qt3DRender::QObjectPickerEvent pickEvent = change->value().value<Qt3DRender::QObjectPickerEvent>();
+ QVERIFY(pickEvent.event);
+ QVERIFY(!Qt3DRender::QPickEventPrivate::get(pickEvent.event.data())->m_entity.isNull());
+ QVERIFY(pickEvent.event.dynamicCast<Qt3DRender::QPickTriangleEvent>());
arbiter.events.clear();
@@ -932,9 +933,9 @@ private Q_SLOTS:
QCOMPARE(arbiter.events.count(), 1);
change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "released");
- pickEvent = change->value().value<Qt3DRender::QPickEventPtr>();
- QVERIFY(pickEvent);
- QVERIFY(Qt3DRender::QPickEventPrivate::get(pickEvent.data())->m_entity.isNull());
+ pickEvent = change->value().value<Qt3DRender::QObjectPickerEvent>();
+ QVERIFY(pickEvent.event);
+ QVERIFY(Qt3DRender::QPickEventPrivate::get(pickEvent.event.data())->m_entity.isNull());
arbiter.events.clear();
@@ -1467,8 +1468,8 @@ private Q_SLOTS:
QVERIFY(backendPicker->isPressed());
Qt3DCore::QPropertyUpdatedChangePtr change = arbiter.events.first().staticCast<Qt3DCore::QPropertyUpdatedChange>();
QCOMPARE(change->propertyName(), "pressed");
- Qt3DRender::QPickEventPtr pickEvent = change->value().value<Qt3DRender::QPickEventPtr>();
- QVERIFY(pickEvent);
+ Qt3DRender::QObjectPickerEvent pickEvent = change->value().value<Qt3DRender::QObjectPickerEvent>();
+ QVERIFY(pickEvent.event);
arbiter.events.clear();
}
diff --git a/tests/auto/render/picking/tst_picking.cpp b/tests/auto/render/picking/tst_picking.cpp
index 47027bf56..4f4201e07 100644
--- a/tests/auto/render/picking/tst_picking.cpp
+++ b/tests/auto/render/picking/tst_picking.cpp
@@ -30,10 +30,12 @@
#include <Qt3DCore/qentity.h>
#include <Qt3DCore/qtransform.h>
#include <Qt3DCore/QPropertyUpdatedChange>
+#include <Qt3DCore/private/qscene_p.h>
#include <Qt3DRender/private/qboundingvolumeprovider_p.h>
#include <Qt3DRender/private/pickboundingvolumejob_p.h>
#include <Qt3DRender/private/objectpicker_p.h>
#include <Qt3DRender/qobjectpicker.h>
+#include <Qt3DRender/private/qobjectpicker_p.h>
#include <Qt3DExtras/qspheremesh.h>
#include <Qt3DRender/qattribute.h>
#include <Qt3DRender/qbuffer.h>
@@ -139,17 +141,22 @@ private Q_SLOTS:
void testEventPressedAcceptPropagation()
{
// GIVEN
+ Qt3DCore::QScene scene;
PickableEntity root(QVector3D(), 5.0f);
PickableEntity child1(QVector3D(), 5.0f, &root);
PickableEntity child2(QVector3D(), 5.0f, &root);
PickableEntity child11(QVector3D(), 5.0f, &child1);
+ Qt3DCore::QNodePrivate::get(root.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child1.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child2.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child11.picker)->setScene(&scene);
QCoreApplication::processEvents();
// WHEN
Qt3DRender::QPickEventPtr event(new Qt3DRender::QPickEvent());
QVariant v;
- v.setValue<Qt3DRender::QPickEventPtr>(event);
+ v.setValue<Qt3DRender::QObjectPickerEvent>({event, Qt3DCore::QNodeId()});
Qt3DCore::QPropertyUpdatedChangePtr e(new Qt3DCore::QPropertyUpdatedChange(child11.id()));
e->setPropertyName("pressed");
e->setValue(v);
@@ -189,17 +196,22 @@ private Q_SLOTS:
void testEventReleasedAcceptPropagation()
{
// GIVEN
+ Qt3DCore::QScene scene;
PickableEntity root(QVector3D(), 5.0f);
PickableEntity child1(QVector3D(), 5.0f, &root);
PickableEntity child2(QVector3D(), 5.0f, &root);
PickableEntity child11(QVector3D(), 5.0f, &child1);
+ Qt3DCore::QNodePrivate::get(root.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child1.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child2.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child11.picker)->setScene(&scene);
QCoreApplication::processEvents();
// WHEN
Qt3DRender::QPickEventPtr event(new Qt3DRender::QPickEvent());
QVariant v;
- v.setValue<Qt3DRender::QPickEventPtr>(event);
+ v.setValue<Qt3DRender::QObjectPickerEvent>({event, Qt3DCore::QNodeId()});
Qt3DCore::QPropertyUpdatedChangePtr e(new Qt3DCore::QPropertyUpdatedChange(child11.id()));
e->setPropertyName("pressed");
e->setValue(v);
@@ -235,17 +247,22 @@ private Q_SLOTS:
void testEventClickedAcceptPropagation()
{
// GIVEN
+ Qt3DCore::QScene scene;
PickableEntity root(QVector3D(), 5.0f);
PickableEntity child1(QVector3D(), 5.0f, &root);
PickableEntity child2(QVector3D(), 5.0f, &root);
PickableEntity child11(QVector3D(), 5.0f, &child1);
+ Qt3DCore::QNodePrivate::get(root.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child1.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child2.picker)->setScene(&scene);
+ Qt3DCore::QNodePrivate::get(child11.picker)->setScene(&scene);
QCoreApplication::processEvents();
// WHEN
Qt3DRender::QPickEventPtr event(new Qt3DRender::QPickEvent());
QVariant v;
- v.setValue<Qt3DRender::QPickEventPtr>(event);
+ v.setValue<Qt3DRender::QObjectPickerEvent>({event, Qt3DCore::QNodeId()});
Qt3DCore::QPropertyUpdatedChangePtr e(new Qt3DCore::QPropertyUpdatedChange(child11.id()));
e->setPropertyName("clicked");
e->setValue(v);
diff --git a/tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp b/tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp
index bd486774c..2f351331a 100644
--- a/tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp
+++ b/tests/auto/render/qobjectpicker/tst_qobjectpicker.cpp
@@ -262,8 +262,10 @@ private Q_SLOTS:
{
// GIVEN
TestArbiter arbiter;
+ Qt3DCore::QScene scene;
QScopedPointer<Qt3DRender::QObjectPicker> objectPicker(new Qt3DRender::QObjectPicker());
arbiter.setArbiterOnNode(objectPicker.data());
+ Qt3DCore::QNodePrivate::get(objectPicker.data())->setScene(&scene);
// WHEN
objectPicker->setHoverEnabled(true);
@@ -317,9 +319,12 @@ private Q_SLOTS:
QFETCH(QByteArray, signalPrototype);
QFETCH(QByteArray, propertyName);
QFETCH(bool, requiresEvent);
+ Qt3DCore::QScene scene;
QScopedPointer<MyObjectPicker> objectPicker(new MyObjectPicker());
+ Qt3DCore::QNodePrivate::get(objectPicker.data())->setScene(&scene);
+
QSignalSpy spy(objectPicker.data(), signalPrototype.constData());
- Qt3DRender::QPickEventPtr event(new Qt3DRender::QPickEvent());
+ Qt3DRender::QObjectPickerEvent event {Qt3DRender::QPickEventPtr::create(), Qt3DCore::QNodeId()};
// WHEN
// Create Backend Change and distribute it to frontend node
@@ -328,7 +333,7 @@ private Q_SLOTS:
if (requiresEvent)
{
QVariant v;
- v.setValue<Qt3DRender::QPickEventPtr>(event);
+ v.setValue<Qt3DRender::QObjectPickerEvent>(event);
e->setValue(v);
}
objectPicker->sceneChangeEvent(e);