1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://www.qt.io/licensing/
5 **
6 ** This file is part of the QtCore module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** Commercial License Usage
10 ** Licensees holding valid commercial Qt licenses may use this file in
11 ** accordance with the commercial license agreement provided with the
12 ** Software or, alternatively, in accordance with the terms contained in
13 ** a written agreement between you and The Qt Company. For licensing terms
14 ** and conditions see http://www.qt.io/terms-conditions. For further
15 ** information use the contact form at http://www.qt.io/contact-us.
16 **
17 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 or version 3 as published by the Free
20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22 ** following information to ensure the GNU Lesser General Public License
23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 **
26 ** As a special exception, The Qt Company gives you certain additional
27 ** rights. These rights are described in The Qt Company LGPL Exception
28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 **
30 ** GNU General Public License Usage
31 ** Alternatively, this file may be used under the terms of the GNU
32 ** General Public License version 3.0 as published by the Free Software
33 ** Foundation and appearing in the file LICENSE.GPL included in the
34 ** packaging of this file. Please review the following information to
35 ** ensure the GNU General Public License version 3.0 requirements will be
36 ** met: http://www.gnu.org/copyleft/gpl.html.
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 #ifndef QCOREEVENT_H
43 #define QCOREEVENT_H
44
45 #include <QtCore/qnamespace.h>
46 #include <QtCore/qbytearray.h>
47 #include <QtCore/qobjectdefs.h>
48
49 QT_BEGIN_HEADER
50
51 QT_BEGIN_NAMESPACE
52
QT_MODULE(Core)53 QT_MODULE(Core)
54
55 class QEventPrivate;
56 class Q_CORE_EXPORT QEvent // event base class
57 {
58 Q_GADGET
59 QDOC_PROPERTY(bool accepted READ isAccepted WRITE setAccepted)
60 Q_ENUMS(Type)
61 public:
62 enum Type {
63 /*
64 If you get a strange compiler error on the line with None,
65 it's probably because you're also including X11 headers,
66 which #define the symbol None. Put the X11 includes after
67 the Qt includes to solve this problem.
68 */
69 None = 0, // invalid event
70 Timer = 1, // timer event
71 MouseButtonPress = 2, // mouse button pressed
72 MouseButtonRelease = 3, // mouse button released
73 MouseButtonDblClick = 4, // mouse button double click
74 MouseMove = 5, // mouse move
75 KeyPress = 6, // key pressed
76 KeyRelease = 7, // key released
77 FocusIn = 8, // keyboard focus received
78 FocusOut = 9, // keyboard focus lost
79 Enter = 10, // mouse enters widget
80 Leave = 11, // mouse leaves widget
81 Paint = 12, // paint widget
82 Move = 13, // move widget
83 Resize = 14, // resize widget
84 Create = 15, // after widget creation
85 Destroy = 16, // during widget destruction
86 Show = 17, // widget is shown
87 Hide = 18, // widget is hidden
88 Close = 19, // request to close widget
89 Quit = 20, // request to quit application
90 ParentChange = 21, // widget has been reparented
91 ParentAboutToChange = 131, // sent just before the parent change is done
92 #ifdef QT3_SUPPORT
93 Reparent = ParentChange,
94 #endif
95 ThreadChange = 22, // object has changed threads
96 WindowActivate = 24, // window was activated
97 WindowDeactivate = 25, // window was deactivated
98 ShowToParent = 26, // widget is shown to parent
99 HideToParent = 27, // widget is hidden to parent
100 Wheel = 31, // wheel event
101 WindowTitleChange = 33, // window title changed
102 WindowIconChange = 34, // icon changed
103 ApplicationWindowIconChange = 35, // application icon changed
104 ApplicationFontChange = 36, // application font changed
105 ApplicationLayoutDirectionChange = 37, // application layout direction changed
106 ApplicationPaletteChange = 38, // application palette changed
107 PaletteChange = 39, // widget palette changed
108 Clipboard = 40, // internal clipboard event
109 Speech = 42, // reserved for speech input
110 MetaCall = 43, // meta call event
111 SockAct = 50, // socket activation
112 WinEventAct = 132, // win event activation
113 DeferredDelete = 52, // deferred delete event
114 DragEnter = 60, // drag moves into widget
115 DragMove = 61, // drag moves in widget
116 DragLeave = 62, // drag leaves or is cancelled
117 Drop = 63, // actual drop
118 DragResponse = 64, // drag accepted/rejected
119 ChildAdded = 68, // new child widget
120 ChildPolished = 69, // polished child widget
121 #ifdef QT3_SUPPORT
122 ChildInsertedRequest = 67, // send ChildInserted compatibility events to receiver
123 ChildInserted = 70, // compatibility child inserted
124 LayoutHint = 72, // compatibility relayout request
125 #endif
126 ChildRemoved = 71, // deleted child widget
127 ShowWindowRequest = 73, // widget's window should be mapped
128 PolishRequest = 74, // widget should be polished
129 Polish = 75, // widget is polished
130 LayoutRequest = 76, // widget should be relayouted
131 UpdateRequest = 77, // widget should be repainted
132 UpdateLater = 78, // request update() later
133
134 EmbeddingControl = 79, // ActiveX embedding
135 ActivateControl = 80, // ActiveX activation
136 DeactivateControl = 81, // ActiveX deactivation
137 ContextMenu = 82, // context popup menu
138 InputMethod = 83, // input method
139 AccessibilityPrepare = 86, // accessibility information is requested
140 TabletMove = 87, // Wacom tablet event
141 LocaleChange = 88, // the system locale changed
142 LanguageChange = 89, // the application language changed
143 LayoutDirectionChange = 90, // the layout direction changed
144 Style = 91, // internal style event
145 TabletPress = 92, // tablet press
146 TabletRelease = 93, // tablet release
147 OkRequest = 94, // CE (Ok) button pressed
148 HelpRequest = 95, // CE (?) button pressed
149
150 IconDrag = 96, // proxy icon dragged
151
152 FontChange = 97, // font has changed
153 EnabledChange = 98, // enabled state has changed
154 ActivationChange = 99, // window activation has changed
155 StyleChange = 100, // style has changed
156 IconTextChange = 101, // icon text has changed
157 ModifiedChange = 102, // modified state has changed
158 MouseTrackingChange = 109, // mouse tracking state has changed
159
160 WindowBlocked = 103, // window is about to be blocked modally
161 WindowUnblocked = 104, // windows modal blocking has ended
162 WindowStateChange = 105,
163
164 ToolTip = 110,
165 WhatsThis = 111,
166 StatusTip = 112,
167
168 ActionChanged = 113,
169 ActionAdded = 114,
170 ActionRemoved = 115,
171
172 FileOpen = 116, // file open request
173
174 Shortcut = 117, // shortcut triggered
175 ShortcutOverride = 51, // shortcut override request
176
177 #ifdef QT3_SUPPORT
178 Accel = 30, // accelerator event
179 AccelAvailable = 32, // accelerator available event
180 AccelOverride = ShortcutOverride, // accelerator override event
181 #endif
182
183 WhatsThisClicked = 118,
184
185 #ifdef QT3_SUPPORT
186 CaptionChange = WindowTitleChange,
187 IconChange = WindowIconChange,
188 #endif
189 ToolBarChange = 120, // toolbar visibility toggled
190
191 ApplicationActivate = 121, // application has been changed to active
192 ApplicationActivated = ApplicationActivate, // deprecated
193 ApplicationDeactivate = 122, // application has been changed to inactive
194 ApplicationDeactivated = ApplicationDeactivate, // deprecated
195
196 QueryWhatsThis = 123, // query what's this widget help
197 EnterWhatsThisMode = 124,
198 LeaveWhatsThisMode = 125,
199
200 ZOrderChange = 126, // child widget has had its z-order changed
201
202 HoverEnter = 127, // mouse cursor enters a hover widget
203 HoverLeave = 128, // mouse cursor leaves a hover widget
204 HoverMove = 129, // mouse cursor move inside a hover widget
205
206 AccessibilityHelp = 119, // accessibility help text request
207 AccessibilityDescription = 130, // accessibility description text request
208
209 // last event id used = 132
210
211 #ifdef QT_KEYPAD_NAVIGATION
212 EnterEditFocus = 150, // enter edit mode in keypad navigation (Defined only with QT_KEYPAD_NAVIGATION)
213 LeaveEditFocus = 151, // leave edit mode in keypad navigation (Defined only with QT_KEYPAD_NAVIGATION)
214 #endif
215 AcceptDropsChange = 152,
216
217 MenubarUpdated = 153, // Support event for Q3MainWindow, which needs to
218 // knwow when QMenubar is updated.
219
220 ZeroTimerEvent = 154, // Used for Windows Zero timer events
221
222 GraphicsSceneMouseMove = 155, // GraphicsView
223 GraphicsSceneMousePress = 156,
224 GraphicsSceneMouseRelease = 157,
225 GraphicsSceneMouseDoubleClick = 158,
226 GraphicsSceneContextMenu = 159,
227 GraphicsSceneHoverEnter = 160,
228 GraphicsSceneHoverMove = 161,
229 GraphicsSceneHoverLeave = 162,
230 GraphicsSceneHelp = 163,
231 GraphicsSceneDragEnter = 164,
232 GraphicsSceneDragMove = 165,
233 GraphicsSceneDragLeave = 166,
234 GraphicsSceneDrop = 167,
235 GraphicsSceneWheel = 168,
236
237 KeyboardLayoutChange = 169, // keyboard layout changed
238
239 DynamicPropertyChange = 170, // A dynamic property was changed through setProperty/property
240
241 TabletEnterProximity = 171,
242 TabletLeaveProximity = 172,
243
244 NonClientAreaMouseMove = 173,
245 NonClientAreaMouseButtonPress = 174,
246 NonClientAreaMouseButtonRelease = 175,
247 NonClientAreaMouseButtonDblClick = 176,
248
249 MacSizeChange = 177, // when the Qt::WA_Mac{Normal,Small,Mini}Size changes
250
251 ContentsRectChange = 178, // sent by QWidget::setContentsMargins (internal)
252
253 MacGLWindowChange = 179, // Internal! the window of the GLWidget has changed
254
255 FutureCallOut = 180,
256
257 GraphicsSceneResize = 181,
258 GraphicsSceneMove = 182,
259
260 CursorChange = 183,
261 ToolTipChange = 184,
262
263 NetworkReplyUpdated = 185, // Internal for QNetworkReply
264
265 GrabMouse = 186,
266 UngrabMouse = 187,
267 GrabKeyboard = 188,
268 UngrabKeyboard = 189,
269 MacGLClearDrawable = 191, // Internal Cocoa, the window has changed, so we must clear
270
271 StateMachineSignal = 192,
272 StateMachineWrapped = 193,
273
274 TouchBegin = 194,
275 TouchUpdate = 195,
276 TouchEnd = 196,
277
278 #ifndef QT_NO_GESTURES
279 NativeGesture = 197, // Internal for platform gesture support
280 #endif
281 RequestSoftwareInputPanel = 199,
282 CloseSoftwareInputPanel = 200,
283
284 UpdateSoftKeys = 201, // Internal for compressing soft key updates
285
286 WinIdChange = 203,
287 #ifndef QT_NO_GESTURES
288 Gesture = 198,
289 GestureOverride = 202,
290 #endif
291
292 PlatformPanel = 212,
293
294 // 512 reserved for Qt Jambi's MetaCall event
295 // 513 reserved for Qt Jambi's DeleteOnMainThread event
296
297 User = 1000, // first user event id
298 MaxUser = 65535 // last user event id
299 };
300
301 QEvent(Type type);
302 virtual ~QEvent();
303 inline Type type() const { return static_cast<Type>(t); }
304 inline bool spontaneous() const { return spont; }
305
306 inline void setAccepted(bool accepted) { m_accept = accepted; }
307 inline bool isAccepted() const { return m_accept; }
308
309 inline void accept() { m_accept = true; }
310 inline void ignore() { m_accept = false; }
311
312 static int registerEventType(int hint = -1);
313
314 protected:
315 QEventPrivate *d;
316 ushort t;
317
318 private:
319 ushort posted : 1;
320 ushort spont : 1;
321 ushort m_accept : 1;
322 ushort reserved : 13;
323
324 friend class QCoreApplication;
325 friend class QCoreApplicationPrivate;
326 friend class QThreadData;
327 friend class QApplication;
328 friend class QApplicationPrivate;
329 friend class Q3AccelManager;
330 friend class QShortcutMap;
331 friend class QETWidget;
332 friend class QGraphicsView;
333 friend class QGraphicsViewPrivate;
334 friend class QGraphicsScene;
335 friend class QGraphicsScenePrivate;
336 #ifndef QT_NO_GESTURES
337 friend class QGestureManager;
338 #endif
339 };
340
341 class Q_CORE_EXPORT QTimerEvent : public QEvent
342 {
343 public:
344 QTimerEvent( int timerId );
345 ~QTimerEvent();
timerId()346 int timerId() const { return id; }
347 protected:
348 int id;
349 };
350
351 class QObject;
352
353 class Q_CORE_EXPORT QChildEvent : public QEvent
354 {
355 public:
356 QChildEvent( Type type, QObject *child );
357 ~QChildEvent();
child()358 QObject *child() const { return c; }
added()359 bool added() const { return type() == ChildAdded; }
360 #ifdef QT3_SUPPORT
inserted()361 QT3_SUPPORT bool inserted() const { return type() == ChildInserted; }
362 #endif
polished()363 bool polished() const { return type() == ChildPolished; }
removed()364 bool removed() const { return type() == ChildRemoved; }
365 protected:
366 QObject *c;
367 };
368
369 #ifdef QT3_SUPPORT
370 class Q_CORE_EXPORT QCustomEvent : public QEvent
371 {
372 public:
373 QT3_SUPPORT_CONSTRUCTOR QCustomEvent(int type, void *data = 0);
374 ~QCustomEvent();
data()375 QT3_SUPPORT void *data() const { return d; }
setData(void * aData)376 QT3_SUPPORT void setData(void* aData) { d = reinterpret_cast<QEventPrivate *>(aData); }
377 };
378 #endif
379
380 class Q_CORE_EXPORT QDynamicPropertyChangeEvent : public QEvent
381 {
382 public:
383 QDynamicPropertyChangeEvent(const QByteArray &name);
384 ~QDynamicPropertyChangeEvent();
385
propertyName()386 inline QByteArray propertyName() const { return n; }
387
388 private:
389 QByteArray n;
390 };
391
392 QT_END_NAMESPACE
393
394 QT_END_HEADER
395
396 #endif // QCOREEVENT_H
397