summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qevent.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kernel/qevent.h')
-rw-r--r--src/gui/kernel/qevent.h100
1 files changed, 37 insertions, 63 deletions
diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h
index 8ee0382c42..0039be5ae9 100644
--- a/src/gui/kernel/qevent.h
+++ b/src/gui/kernel/qevent.h
@@ -49,6 +49,7 @@
#include <QtCore/qvariant.h>
#include <QtCore/qvector.h>
#include <QtCore/qurl.h>
+#include <QtGui/qpointingdevice.h>
#include <QtGui/qregion.h>
#include <QtGui/qvector2d.h>
#include <QtGui/qwindowdefs.h>
@@ -61,8 +62,9 @@ QT_BEGIN_NAMESPACE
class QFile;
class QAction;
+class QInputDevice;
+class QPointingDevice;
class QScreen;
-class QTouchDevice;
#if QT_CONFIG(gestures)
class QGesture;
#endif
@@ -70,17 +72,30 @@ class QGesture;
class Q_GUI_EXPORT QInputEvent : public QEvent
{
public:
- explicit QInputEvent(Type type, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
+ explicit QInputEvent(Type type, const QInputDevice *m_dev, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
~QInputEvent();
+ const QInputDevice *device() const { return m_dev; }
+ QInputDevice::DeviceType deviceType() const { return m_dev ? m_dev->type() : QInputDevice::DeviceType::Unknown; }
inline Qt::KeyboardModifiers modifiers() const { return modState; }
inline void setModifiers(Qt::KeyboardModifiers amodifiers) { modState = amodifiers; }
inline ulong timestamp() const { return ts; }
inline void setTimestamp(ulong atimestamp) { ts = atimestamp; }
protected:
+ const QInputDevice *m_dev = nullptr;
Qt::KeyboardModifiers modState;
ulong ts;
};
+class Q_GUI_EXPORT QPointerEvent : public QInputEvent
+{
+public:
+ explicit QPointerEvent(Type type, const QPointingDevice *dev, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
+ const QPointingDevice *pointingDevice() const;
+ QPointingDevice::PointerType pointerType() const {
+ return pointingDevice() ? pointingDevice()->pointerType() : QPointingDevice::PointerType::Unknown;
+ }
+};
+
class Q_GUI_EXPORT QEnterEvent : public QEvent
{
public:
@@ -118,7 +133,7 @@ protected:
QPointF l, s, g;
};
-class Q_GUI_EXPORT QMouseEvent : public QInputEvent
+class Q_GUI_EXPORT QMouseEvent : public QPointerEvent
{
public:
QMouseEvent(Type type, const QPointF &localPos, Qt::MouseButton button,
@@ -207,7 +222,7 @@ protected:
};
#if QT_CONFIG(wheelevent)
-class Q_GUI_EXPORT QWheelEvent : public QInputEvent
+class Q_GUI_EXPORT QWheelEvent : public QPointerEvent
{
public:
enum { DefaultDeltasPerStep = 120 };
@@ -247,20 +262,20 @@ protected:
#endif
#if QT_CONFIG(tabletevent)
-class Q_GUI_EXPORT QTabletEvent : public QInputEvent
+class Q_GUI_EXPORT QTabletEvent : public QPointerEvent
{
Q_GADGET
public:
- enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse, RotationStylus };
- Q_ENUM(TabletDevice)
- enum PointerType { UnknownPointer, Pen, Cursor, Eraser };
- Q_ENUM(PointerType)
-
QTabletEvent(Type t, const QPointF &pos, const QPointF &globalPos,
- int device, int pointerType, qreal pressure, int xTilt, int yTilt,
+ int deviceType, int pointerType, qreal pressure, int xTilt, int yTilt,
qreal tangentialPressure, qreal rotation, int z,
Qt::KeyboardModifiers keyState, qint64 uniqueID,
Qt::MouseButton button, Qt::MouseButtons buttons);
+ QTabletEvent(Type t, const QPointingDevice *dev, const QPointF &pos, const QPointF &globalPos,
+ qreal pressure, int xTilt, int yTilt,
+ qreal tangentialPressure, qreal rotation, int z,
+ Qt::KeyboardModifiers keyState,
+ Qt::MouseButton button, Qt::MouseButtons buttons);
~QTabletEvent();
#if QT_DEPRECATED_SINCE(6, 0)
@@ -288,35 +303,31 @@ public:
#endif
inline QPointF position() const { return mPos; }
inline QPointF globalPosition() const { return mGPos; }
- inline TabletDevice deviceType() const { return TabletDevice(mDev); }
- inline PointerType pointerType() const { return PointerType(mPointerType); }
- inline qint64 uniqueId() const { return mUnique; }
+ inline qint64 uniqueId() const { return pointingDevice() ? pointingDevice()->uniqueId().numericId() : -1; }
inline qreal pressure() const { return mPress; }
inline int z() const { return mZ; }
inline qreal tangentialPressure() const { return mTangential; }
inline qreal rotation() const { return mRot; }
inline int xTilt() const { return mXT; }
inline int yTilt() const { return mYT; }
- Qt::MouseButton button() const;
- Qt::MouseButtons buttons() const;
+ inline Qt::MouseButton button() const { return mButton; }
+ inline Qt::MouseButtons buttons() const { return mButtons; }
protected:
QPointF mPos, mGPos;
- int mDev, mPointerType, mXT, mYT, mZ;
+ int mXT, mYT, mZ;
qreal mPress, mTangential, mRot;
- qint64 mUnique;
-
- // QTabletEventPrivate for extra storage.
- // ### Qt 6: QPointingEvent will have Buttons, QTabletEvent will inherit
- void *mExtra;
+ // TODO refactor to parent class along with QMouseEvent's button storage
+ Qt::MouseButton mButton;
+ Qt::MouseButtons mButtons;
};
#endif // QT_CONFIG(tabletevent)
#if QT_CONFIG(gestures)
-class Q_GUI_EXPORT QNativeGestureEvent : public QInputEvent
+class Q_GUI_EXPORT QNativeGestureEvent : public QPointerEvent
{
public:
- QNativeGestureEvent(Qt::NativeGestureType type, const QTouchDevice *dev, const QPointF &localPos, const QPointF &scenePos,
+ QNativeGestureEvent(Qt::NativeGestureType type, const QPointingDevice *dev, const QPointF &localPos, const QPointF &scenePos,
const QPointF &globalPos, qreal value, ulong sequenceId, quint64 intArgument);
~QNativeGestureEvent();
Qt::NativeGestureType gestureType() const { return mGestureType; }
@@ -341,8 +352,6 @@ public:
QPointF scenePosition() const { return mScenePos; }
QPointF globalPosition() const { return mGlobalPos; }
- const QTouchDevice *device() const { return mDevice; }
-
protected:
Qt::NativeGestureType mGestureType;
QPointF mLocalPos;
@@ -351,7 +360,6 @@ protected:
qreal mRealValue;
ulong mSequenceId;
quint64 mIntValue;
- const QTouchDevice *mDevice;
};
#endif // QT_CONFIG(gestures)
@@ -817,38 +825,8 @@ inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ?
inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
#endif // QT_CONFIG(shortcut)
-class Q_GUI_EXPORT QPointingDeviceUniqueId
-{
- Q_GADGET
- Q_PROPERTY(qint64 numericId READ numericId CONSTANT)
-public:
- Q_ALWAYS_INLINE
- Q_DECL_CONSTEXPR QPointingDeviceUniqueId() noexcept : m_numericId(-1) {}
- // compiler-generated copy/move ctor/assignment operators are ok!
- // compiler-generated dtor is ok!
-
- static QPointingDeviceUniqueId fromNumericId(qint64 id);
-
- Q_ALWAYS_INLINE Q_DECL_CONSTEXPR bool isValid() const noexcept { return m_numericId != -1; }
- qint64 numericId() const noexcept;
-
-private:
- // TODO: for TUIO 2, or any other type of complex token ID, an internal
- // array (or hash) can be added to hold additional properties.
- // In this case, m_numericId will then turn into an index into that array (or hash).
- qint64 m_numericId;
-};
-Q_DECLARE_TYPEINFO(QPointingDeviceUniqueId, Q_MOVABLE_TYPE);
-
-Q_GUI_EXPORT bool operator==(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs) noexcept;
-inline bool operator!=(QPointingDeviceUniqueId lhs, QPointingDeviceUniqueId rhs) noexcept
-{ return !operator==(lhs, rhs); }
-Q_GUI_EXPORT size_t qHash(QPointingDeviceUniqueId key, size_t seed = 0) noexcept;
-
-
-
class QTouchEventTouchPointPrivate;
-class Q_GUI_EXPORT QTouchEvent : public QInputEvent
+class Q_GUI_EXPORT QTouchEvent : public QPointerEvent
{
public:
class Q_GUI_EXPORT TouchPoint
@@ -963,7 +941,7 @@ public:
};
explicit QTouchEvent(QEvent::Type eventType,
- QTouchDevice *device = nullptr,
+ const QPointingDevice *source = nullptr,
Qt::KeyboardModifiers modifiers = Qt::NoModifier,
Qt::TouchPointStates touchPointStates = Qt::TouchPointStates(),
const QList<QTouchEvent::TouchPoint> &touchPoints = QList<QTouchEvent::TouchPoint>());
@@ -973,21 +951,17 @@ public:
inline QObject *target() const { return _target; }
inline Qt::TouchPointStates touchPointStates() const { return _touchPointStates; }
inline const QList<QTouchEvent::TouchPoint> &touchPoints() const { return _touchPoints; }
- inline QTouchDevice *device() const { return _device; }
// ### Qt 6: move private, rename appropriately, only friends can call them; or just let friends modify variables directly
#if QT_DEPRECATED_SINCE(6, 0)
inline void setWindow(QWindow *awindow) { _window = awindow; }
inline void setTarget(QObject *atarget) { _target = atarget; }
- inline void setTouchPointStates(Qt::TouchPointStates aTouchPointStates) { _touchPointStates = aTouchPointStates; }
inline void setTouchPoints(const QList<QTouchEvent::TouchPoint> &atouchPoints) { _touchPoints = atouchPoints; }
- inline void setDevice(QTouchDevice *adevice) { _device = adevice; }
#endif // QT_DEPRECATED_SINCE(6, 0)
protected:
QWindow *_window;
QObject *_target;
- QTouchDevice *_device;
Qt::TouchPointStates _touchPointStates;
QList<QTouchEvent::TouchPoint> _touchPoints;