aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2016-07-09 12:37:04 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2016-07-11 10:01:02 +0000
commit62bae5c556251eec5d5295c258df3fb85e3c1bcc (patch)
treea40cc524b29256b014fd812be1a8b3225b851df4 /src/quick/items
parentf2e9e411cdc24683a2b201e6c00ffa6404a0717c (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.cpp58
-rw-r--r--src/quick/items/qquickevents_p_p.h4
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;