diff options
author | Mike Krus <mike.krus@kdab.com> | 2016-12-13 14:57:51 +0000 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2016-12-14 11:18:00 +0000 |
commit | 718126df5a180346675601782b4a879a0a9b2b8a (patch) | |
tree | c44f7e1a79021522737b49ab144f7f905da5374a | |
parent | 629de0e31253d9c8b388f6f549aa3ad6abf3c630 (diff) |
Fix hover support in QObjectPicker
Remove early termination test (looking to avoid doing picking
on mouse move) as it breaks hover support.
Need to more thorough test later
Change-Id: Ia65803f921a63765d56d44620bdae2155ef0666e
Task-number: QTBUG-57592
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
-rw-r--r-- | src/render/jobs/pickboundingvolumejob.cpp | 29 | ||||
-rw-r--r-- | tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp | 6 |
2 files changed, 6 insertions, 29 deletions
diff --git a/src/render/jobs/pickboundingvolumejob.cpp b/src/render/jobs/pickboundingvolumejob.cpp index 7aa2be759..4a228681a 100644 --- a/src/render/jobs/pickboundingvolumejob.cpp +++ b/src/render/jobs/pickboundingvolumejob.cpp @@ -158,35 +158,6 @@ bool PickBoundingVolumeJob::runHelper() if (vcaTriplets.empty()) return false; - bool hasMoveEvent = false; - bool hasOtherEvent = false; - - // Quickly look which types of events we've got - for (const QMouseEvent &event : mouseEvents) { - const bool isMove = (event.type() == QEvent::MouseMove); - hasMoveEvent |= isMove; - hasOtherEvent |= !isMove; - } - - // In the case we have a move event, find if we actually have - // an object picker that cares about these - if (!hasOtherEvent) { - // Retrieve the last used object picker - ObjectPicker *lastCurrentPicker = m_manager->objectPickerManager()->data(m_currentPicker); - - // The only way to set lastCurrentPicker is to click - // so we can return since if we're there it means we - // have only move events - if (lastCurrentPicker == nullptr) - return false; - - const bool caresAboutMove = (hasMoveEvent && lastCurrentPicker->isDragEnabled()); - // Early return if the current object picker doesn't care about move events - if (!caresAboutMove) - return false; - } - - // TO DO: // If we have move or hover move events that someone cares about, we try to avoid expensive computations // by compressing them into a single one diff --git a/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp b/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp index f9e177971..11b60f3c2 100644 --- a/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp +++ b/tests/auto/render/pickboundingvolumejob/tst_pickboundingvolumejob.cpp @@ -436,6 +436,8 @@ private Q_SLOTS: void checkEarlyReturnWhenMoveEventsAndNoCurrentPickers() { + QSKIP("Disabled following removal of early return checks"); + // GIVEN QmlSceneReader sceneReader(QUrl("qrc:/testscene_dragenabled.qml")); QScopedPointer<Qt3DCore::QNode> root(qobject_cast<Qt3DCore::QNode *>(sceneReader.root())); @@ -485,11 +487,15 @@ private Q_SLOTS: void checkEarlyReturnWhenMoveEventsAndDragDisabledPickers_data() { + QSKIP("Disabled following removal of early return checks"); + generateAllPickingSettingsCombinations(); } void checkEarlyReturnWhenMoveEventsAndDragDisabledPickers() { + QSKIP("Disabled following removal of early return checks"); + // GIVEN QmlSceneReader sceneReader(QUrl("qrc:/testscene_dragdisabled.qml")); QScopedPointer<Qt3DCore::QNode> root(qobject_cast<Qt3DCore::QNode *>(sceneReader.root())); |