diff options
author | Paul Lemire <paul.lemire350@gmail.com> | 2015-12-05 18:08:16 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-12-07 19:07:17 +0000 |
commit | 32607bdf4c0261f160cfc62c412f76c3c6555996 (patch) | |
tree | 645b2cbb59ae6ccd9b09ba5d85a0664e0f0a5ce9 /src | |
parent | b682dd89d62c7e565e87ee4c8fff48805874458f (diff) |
MouseController: various fixes
Change-Id: Ie6f90a8b0ffca4a20b90edebb70b41a210246d2a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/input/backend/inputhandler.cpp | 2 | ||||
-rw-r--r-- | src/input/backend/mousecontroller.cpp | 21 | ||||
-rw-r--r-- | src/input/backend/mousecontroller_p.h | 11 | ||||
-rw-r--r-- | src/input/frontend/qmousecontroller.h | 2 |
4 files changed, 26 insertions, 10 deletions
diff --git a/src/input/backend/inputhandler.cpp b/src/input/backend/inputhandler.cpp index 7a71b78f0..08ae3021d 100644 --- a/src/input/backend/inputhandler.cpp +++ b/src/input/backend/inputhandler.cpp @@ -183,9 +183,9 @@ QVector<Qt3DCore::QAspectJobPtr> InputHandler::mouseJobs() Q_FOREACH (const HMouseController cHandle, m_activeMouseControllers) { MouseController *controller = m_mouseControllerManager->data(cHandle); + controller->updateMouseEvents(events); // Event dispacthing job if (!events.isEmpty()) { - controller->updateMouseEvents(events); Q_FOREACH (const QNodeId &input, controller->mouseInputs()) { MouseEventDispatcherJob *job = new MouseEventDispatcherJob(input, events); job->setInputHandler(this); diff --git a/src/input/backend/mousecontroller.cpp b/src/input/backend/mousecontroller.cpp index 2a39c088d..e82ae1b43 100644 --- a/src/input/backend/mousecontroller.cpp +++ b/src/input/backend/mousecontroller.cpp @@ -98,9 +98,9 @@ bool MouseController::isButtonPressed(int buttonIdentifier) const case QMouseController::Left: return m_mouseState.leftPressed; case QMouseController::Center: - return m_mouseState.rightPressed; - case QMouseController::Right: return m_mouseState.centerPressed; + case QMouseController::Right: + return m_mouseState.rightPressed; default: break; } @@ -114,12 +114,17 @@ QVector<Qt3DCore::QNodeId> MouseController::mouseInputs() const void MouseController::updateMouseEvents(const QList<QMouseEvent> &events) { - Q_FOREACH (const QMouseEvent &e, events) { - m_mouseState.leftPressed = e.buttons() & (Qt::LeftButton); - m_mouseState.centerPressed = e.buttons() & (Qt::MiddleButton); - m_mouseState.rightPressed = e.buttons() & (Qt::RightButton); - m_mouseState.xAxis = m_previousPos.x() - e.screenPos().x(); - m_mouseState.yAxis = m_previousPos.y() - e.screenPos().y(); + if (!events.isEmpty()) { + Q_FOREACH (const QMouseEvent &e, events) { + m_mouseState.leftPressed = e.buttons() & (Qt::LeftButton); + m_mouseState.centerPressed = e.buttons() & (Qt::MiddleButton); + m_mouseState.rightPressed = e.buttons() & (Qt::RightButton); + m_mouseState.xAxis = 0.1 * (e.screenPos().x() - m_previousPos.x()); + m_mouseState.yAxis = 0.1 * (m_previousPos.y() - e.screenPos().y()); + m_previousPos = e.screenPos(); + } + } else { + m_mouseState = MouseState(); } } diff --git a/src/input/backend/mousecontroller_p.h b/src/input/backend/mousecontroller_p.h index 7d6d55c97..3605659ff 100644 --- a/src/input/backend/mousecontroller_p.h +++ b/src/input/backend/mousecontroller_p.h @@ -85,6 +85,15 @@ private: InputHandler *m_inputHandler; struct MouseState { + + MouseState() + : xAxis(0.0f) + , yAxis(0.0f) + , leftPressed(false) + , rightPressed(false) + , centerPressed(false) + {} + float xAxis; float yAxis; bool leftPressed; @@ -93,7 +102,7 @@ private: }; MouseState m_mouseState; - QPoint m_previousPos; + QPointF m_previousPos; }; class MouseControllerFunctor : public Qt3DCore::QBackendNodeFunctor diff --git a/src/input/frontend/qmousecontroller.h b/src/input/frontend/qmousecontroller.h index b7be253f8..ce9c2b2bc 100644 --- a/src/input/frontend/qmousecontroller.h +++ b/src/input/frontend/qmousecontroller.h @@ -58,12 +58,14 @@ public: X, Y }; + Q_ENUM(Axis) enum Button { Left, Center, Right }; + Q_ENUM(Button) int axisCount() const Q_DECL_FINAL; int buttonCount() const Q_DECL_FINAL; |