diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2016-07-09 12:37:04 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-07-11 10:01:02 +0000 |
commit | 62bae5c556251eec5d5295c258df3fb85e3c1bcc (patch) | |
tree | a40cc524b29256b014fd812be1a8b3225b851df4 /src/quick/items | |
parent | f2e9e411cdc24683a2b201e6c00ffa6404a0717c (diff) |
Move detection of event type to separate functions
Change-Id: Id7fc9df6b57c63f9cbdbc96f3e141ee509782e59
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src/quick/items')
-rw-r--r-- | src/quick/items/qquickevents.cpp | 58 | ||||
-rw-r--r-- | src/quick/items/qquickevents_p_p.h | 4 |
2 files changed, 39 insertions, 23 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp index 5f98db98bb..520e5d2704 100644 --- a/src/quick/items/qquickevents.cpp +++ b/src/quick/items/qquickevents.cpp @@ -440,11 +440,10 @@ Item { QQuickPointerEvent *QQuickPointerEvent::reset(QEvent *ev) { - if (ev->type() >= QEvent::MouseButtonPress && ev->type() <= QEvent::MouseMove) - { + m_event = static_cast<QInputEvent*>(ev); + if (isMouseEvent()) { initFromMouse(static_cast<QMouseEvent*>(ev)); - } else if ((ev->type() >= QEvent::TouchBegin && ev->type() <= QEvent::TouchEnd) - || ev->type() == QEvent::TouchCancel) { + } else if (isTouchEvent()) { initFromTouch(static_cast<QTouchEvent*>(ev)); } else { Q_ASSERT_X(false, "", "invalid event type"); @@ -494,33 +493,46 @@ void QQuickPointerEvent::initFromTouch(QTouchEvent *ev) { } QTouchEvent *QQuickPointerEvent::asTouchEvent() const { - if (!m_event) + if (!isTouchEvent()) return nullptr; - switch (m_event->type()) { - case QEvent::TouchBegin: - case QEvent::TouchCancel: - case QEvent::TouchUpdate: - case QEvent::TouchEnd: - return static_cast<QTouchEvent *>(m_event); - default: - break; - } - return nullptr; + return static_cast<QTouchEvent *>(m_event); } QMouseEvent *QQuickPointerEvent::asMouseEvent() const { + if (isMouseEvent()) + return static_cast<QMouseEvent *>(m_event); + return nullptr; +} + + +bool QQuickPointerEvent::isMouseEvent() const +{ + return m_event + && m_event->type() >= QEvent::MouseButtonPress + && m_event->type() <= QEvent::MouseMove; +} + +bool QQuickPointerEvent::isTouchEvent() const +{ + return m_event + && ((m_event->type() >= QEvent::TouchBegin && m_event->type() <= QEvent::TouchEnd) + || m_event->type() == QEvent::TouchCancel); +} + +bool QQuickPointerEvent::isTabletEvent() const +{ if (!m_event) - return nullptr; + return false; switch (m_event->type()) { - case QEvent::MouseMove: - case QEvent::MouseButtonPress: - case QEvent::MouseButtonRelease: - case QEvent::MouseButtonDblClick: - return static_cast<QMouseEvent *>(m_event); + case QEvent::TabletPress: + case QEvent::TabletRelease: + case QEvent::TabletMove: + case QEvent::TabletEnterProximity: + case QEvent::TabletLeaveProximity: + return true; default: - return nullptr; + return false; } } - QT_END_NAMESPACE diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h index d3ca5cadf5..c4c4daf830 100644 --- a/src/quick/items/qquickevents_p_p.h +++ b/src/quick/items/qquickevents_p_p.h @@ -426,6 +426,10 @@ protected: bool isValid() const { return m_event != nullptr; } protected: + bool isMouseEvent() const; + bool isTouchEvent() const; + bool isTabletEvent() const; + const QQuickPointerDevice *m_device; QInputEvent *m_event; // original event as received by QQuickWindow Qt::MouseButton m_button; |