diff options
author | Nicolas Guichard <nicolas.guichard@kdab.com> | 2021-02-25 13:55:01 +0100 |
---|---|---|
committer | Nicolas Guichard <nicolas.guichard@kdab.com> | 2021-02-26 11:35:20 +0100 |
commit | 1641eae01636ddb82b668c4f91d2c26f89e5bc06 (patch) | |
tree | 1bafd77201864eab753f61b5d373ebdd6d07ba52 | |
parent | 046284092930aa94477af79e984e2567c5a7bd79 (diff) |
ObjectPicker: ensure pristine pickers are handled
When adding a QObjectPicker component to a QEntity, the object couldn't
actually be picked until one of hoverEnabled, dragEnabled or priority
changed.
This fixes the issue by ensuring notifyJob is called at least once,
when the picker is initialized.
Pick-to: 6.1
Change-Id: I5b035cf5be6ef1da35c2d24cf76bc2daaad9bc57
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r-- | src/render/picking/objectpicker.cpp | 5 | ||||
-rw-r--r-- | tests/auto/render/objectpicker/tst_objectpicker.cpp | 15 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/render/picking/objectpicker.cpp b/src/render/picking/objectpicker.cpp index 2f679ceb1..35b5455d7 100644 --- a/src/render/picking/objectpicker.cpp +++ b/src/render/picking/objectpicker.cpp @@ -82,6 +82,11 @@ void ObjectPicker::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstT BackendNode::syncFromFrontEnd(frontEnd, firstTime); + if (firstTime) { + markDirty(AbstractRenderer::AllDirty); + notifyJob(); + } + if (node->isHoverEnabled() != m_hoverEnabled) { m_hoverEnabled = node->isHoverEnabled(); markDirty(AbstractRenderer::AllDirty); diff --git a/tests/auto/render/objectpicker/tst_objectpicker.cpp b/tests/auto/render/objectpicker/tst_objectpicker.cpp index 0bbaffa84..0e09e266b 100644 --- a/tests/auto/render/objectpicker/tst_objectpicker.cpp +++ b/tests/auto/render/objectpicker/tst_objectpicker.cpp @@ -40,6 +40,21 @@ class tst_ObjectPicker : public Qt3DCore::QBackendNodeTester Q_OBJECT private Q_SLOTS: + void checkInitialSync() + { + // GIVEN + TestRenderer renderer; + Qt3DRender::Render::ObjectPicker objectPicker; + Qt3DRender::QObjectPicker picker; + + // WHEN + objectPicker.setRenderer(&renderer); + simulateInitializationSync(&picker, &objectPicker); + + // THEN + QVERIFY(renderer.dirtyBits() != 0); + } + void checkPeerPropertyMirroring() { // GIVEN |