diff options
author | Mike Krus <mike.krus@kdab.com> | 2019-09-30 09:51:43 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2019-10-01 07:04:23 +0100 |
commit | 040d50f0e3c44739bb546ac96da251b03d7ac271 (patch) | |
tree | b852e01a6190f926add7e07be3412cb09842064e /src/input/backend | |
parent | 07ef673479309ea6bfd57026be0fdb2ccdda0a9b (diff) |
Update QMouseHandler to use direct sync
Change-Id: Ia3fe8a32ca2f750c866f8df91e53ff0ea4d53dcc
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/input/backend')
-rw-r--r-- | src/input/backend/mousehandler.cpp | 29 | ||||
-rw-r--r-- | src/input/backend/mousehandler_p.h | 8 |
2 files changed, 13 insertions, 24 deletions
diff --git a/src/input/backend/mousehandler.cpp b/src/input/backend/mousehandler.cpp index c492dcf28..e0b0f1e7f 100644 --- a/src/input/backend/mousehandler.cpp +++ b/src/input/backend/mousehandler.cpp @@ -56,7 +56,7 @@ namespace Qt3DInput { namespace Input { MouseHandler::MouseHandler() - : QBackendNode(ReadWrite) + : BackendNode(ReadWrite) , m_inputHandler(nullptr) { } @@ -65,13 +65,6 @@ MouseHandler::~MouseHandler() { } -void MouseHandler::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) -{ - const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QMouseHandlerData>>(change); - const auto &data = typedChange->data; - setDevice(data.mouseDeviceId); -} - Qt3DCore::QNodeId MouseHandler::mouseDevice() const { return m_mouseDevice; @@ -102,18 +95,16 @@ void MouseHandler::wheelEvent(const QWheelEventPtr &event) } #endif -void MouseHandler::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) +void MouseHandler::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) { - if (e->type() == PropertyUpdated) { - QPropertyUpdatedChangePtr propertyChange = qSharedPointerCast<QPropertyUpdatedChange>(e); - if (propertyChange->propertyName() == QByteArrayLiteral("device")) { - const QNodeId newId = propertyChange->value().value<QNodeId>(); - if (m_mouseDevice != newId) { - setDevice(newId); - } - } - } - QBackendNode::sceneChangeEvent(e); + BackendNode::syncFromFrontEnd(frontEnd, firstTime); + const Qt3DInput::QMouseHandler *node = qobject_cast<const Qt3DInput::QMouseHandler *>(frontEnd); + if (!node) + return; + + const auto newId = Qt3DCore::qIdForNode(node->sourceDevice()); + if (m_mouseDevice != newId) + setDevice(newId); } void MouseHandler::setDevice(Qt3DCore::QNodeId device) diff --git a/src/input/backend/mousehandler_p.h b/src/input/backend/mousehandler_p.h index 6d748c068..dc1e210ac 100644 --- a/src/input/backend/mousehandler_p.h +++ b/src/input/backend/mousehandler_p.h @@ -52,7 +52,7 @@ // #include <Qt3DInput/qmouseevent.h> -#include <Qt3DCore/qbackendnode.h> +#include <Qt3DInput/private/backendnode_p.h> QT_BEGIN_NAMESPACE @@ -61,7 +61,7 @@ namespace Input { class InputHandler; -class MouseHandler : public Qt3DCore::QBackendNode +class MouseHandler : public BackendNode { public: MouseHandler(); @@ -75,12 +75,10 @@ public: #endif protected: - void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) override; + void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override; void setDevice(Qt3DCore::QNodeId device); private: - void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) final; - Qt3DCore::QNodeId m_mouseDevice; InputHandler *m_inputHandler; }; |