1// Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QT3DINPUT_QMOUSEEVENT_H
5#define QT3DINPUT_QMOUSEEVENT_H
6
7#include <Qt3DInput/qt3dinput_global.h>
8#include <QtCore/QtGlobal>
9#include <QtCore/QObject>
10#include <QtGui/QMouseEvent>
11
12#include <memory>
13
14QT_BEGIN_NAMESPACE
15
16namespace Qt3DInput {
17
18class Q_3DINPUTSHARED_EXPORT QMouseEvent : public QObject
19{
20 Q_OBJECT
21 Q_PROPERTY(int x READ x CONSTANT)
22 Q_PROPERTY(int y READ y CONSTANT)
23 Q_PROPERTY(bool wasHeld READ wasHeld CONSTANT)
24 Q_PROPERTY(Qt3DInput::QMouseEvent::Buttons button READ button CONSTANT)
25 Q_PROPERTY(int buttons READ buttons CONSTANT)
26 Q_PROPERTY(Qt3DInput::QMouseEvent::Modifiers modifiers READ modifiers CONSTANT)
27 Q_PROPERTY(bool accepted READ isAccepted WRITE setAccepted)
28public:
29 enum Buttons {
30 LeftButton = Qt::LeftButton,
31 RightButton = Qt::RightButton,
32 MiddleButton = Qt::MiddleButton,
33 BackButton = Qt::BackButton,
34 NoButton = Qt::NoButton
35 };
36 Q_ENUM(Buttons) // LCOV_EXCL_LINE
37
38 enum Modifiers {
39 NoModifier = Qt::NoModifier,
40 ShiftModifier = Qt::ShiftModifier,
41 ControlModifier = Qt::ControlModifier,
42 AltModifier = Qt::AltModifier,
43 MetaModifier = Qt::MetaModifier,
44 KeypadModifier = Qt::KeypadModifier
45 };
46 Q_ENUM(Modifiers) // LCOV_EXCL_LINE
47 // TO DO Qt6 Modifiers -> Modifier and add Q_FLAG(Modifiers)
48
49 explicit QMouseEvent(const QT_PREPEND_NAMESPACE(QMouseEvent) &e);
50 ~QMouseEvent();
51
52 inline int x() const { return int(m_event->position().x()); }
53 inline int y() const { return int(m_event->position().y()); }
54 inline bool wasHeld() const {
55#if QT_CONFIG(gestures)
56 return static_cast<Qt::GestureType>(m_event->type()) == Qt::TapAndHoldGesture;
57#else
58 return false;
59#endif
60 }
61 Buttons button() const;
62 int buttons() const;
63 Modifiers modifiers() const;
64
65 inline bool isAccepted() const { return m_event->isAccepted(); }
66 inline void setAccepted(bool accepted) { m_event->setAccepted(accepted); }
67 inline QEvent::Type type() const { return m_event->type(); }
68
69private:
70 std::unique_ptr<QT_PREPEND_NAMESPACE(QMouseEvent)> m_event;
71};
72
73typedef QSharedPointer<QMouseEvent> QMouseEventPtr;
74
75#if QT_CONFIG(wheelevent)
76class Q_3DINPUTSHARED_EXPORT QWheelEvent : public QObject
77{
78 Q_OBJECT
79 Q_PROPERTY(int x READ x CONSTANT)
80 Q_PROPERTY(int y READ y CONSTANT)
81 Q_PROPERTY(QPoint angleDelta READ angleDelta CONSTANT)
82 Q_PROPERTY(int buttons READ buttons CONSTANT)
83 Q_PROPERTY(Qt3DInput::QWheelEvent::Modifiers modifiers READ modifiers CONSTANT)
84 Q_PROPERTY(bool accepted READ isAccepted WRITE setAccepted)
85
86public:
87 enum Buttons {
88 LeftButton = Qt::LeftButton,
89 RightButton = Qt::RightButton,
90 MiddleButton = Qt::MiddleButton,
91 BackButton = Qt::BackButton,
92 NoButton = Qt::NoButton
93 };
94 Q_ENUM(Buttons) // LCOV_EXCL_LINE
95
96 enum Modifiers {
97 NoModifier = Qt::NoModifier,
98 ShiftModifier = Qt::ShiftModifier,
99 ControlModifier = Qt::ControlModifier,
100 AltModifier = Qt::AltModifier,
101 MetaModifier = Qt::MetaModifier,
102 KeypadModifier = Qt::KeypadModifier
103 };
104 Q_ENUM(Modifiers) // LCOV_EXCL_LINE
105 // TO DO Qt6 Modifiers -> Modifier and add Q_FLAG(Modifiers)
106
107 explicit QWheelEvent(const QT_PREPEND_NAMESPACE(QWheelEvent) &e);
108 ~QWheelEvent();
109
110 inline int x() const { return int(m_event->position().x()); }
111 inline int y() const { return int(m_event->position().y()); }
112 inline QPoint angleDelta() const { return m_event->angleDelta(); }
113 int buttons() const;
114 Modifiers modifiers() const;
115
116 inline bool isAccepted() const { return m_event->isAccepted(); }
117 inline void setAccepted(bool accepted) { m_event->setAccepted(accepted); }
118 inline QEvent::Type type() const { return m_event->type(); }
119
120private:
121 std::unique_ptr<QT_PREPEND_NAMESPACE(QWheelEvent)> m_event;
122};
123
124typedef QSharedPointer<QWheelEvent> QWheelEventPtr;
125#endif
126
127} // namespace Qt3DInput
128
129QT_END_NAMESPACE
130
131Q_DECLARE_METATYPE(Qt3DInput::QMouseEvent*) // LCOV_EXCL_LINE
132
133#if QT_CONFIG(wheelevent)
134Q_DECLARE_METATYPE(Qt3DInput::QWheelEvent*) // LCOV_EXCL_LINE
135#endif
136
137#endif // QT3DINPUT_QMOUSEEVENT_H
138

source code of qt3d/src/input/frontend/qmouseevent.h