1/****************************************************************************
2**
3** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
4** Contact: http://www.qt-project.org/legal
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 Digia. For licensing terms and
14** conditions see http://qt.digia.com/licensing. For further information
15** use the contact form at http://qt.digia.com/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 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 2.1 requirements
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24**
25** In addition, as a special exception, Digia gives you certain additional
26** rights. These rights are described in the Digia Qt LGPL Exception
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28**
29** GNU General Public License Usage
30** Alternatively, this file may be used under the terms of the GNU
31** General Public License version 3.0 as published by the Free Software
32** Foundation and appearing in the file LICENSE.GPL included in the
33** packaging of this file. Please review the following information to
34** ensure the GNU General Public License version 3.0 requirements will be
35** met: http://www.gnu.org/copyleft/gpl.html.
36**
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
49QT_BEGIN_HEADER
50
51QT_BEGIN_NAMESPACE
52
53QT_MODULE(Core)
54
55class QEventPrivate;
56class Q_CORE_EXPORT QEvent // event base class
57{
58 Q_GADGET
59 QDOC_PROPERTY(bool accepted READ isAccepted WRITE setAccepted)
60 Q_ENUMS(Type)
61public:
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
314protected:
315 QEventPrivate *d;
316 ushort t;
317
318private:
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
341class Q_CORE_EXPORT QTimerEvent : public QEvent
342{
343public:
344 QTimerEvent( int timerId );
345 ~QTimerEvent();
346 int timerId() const { return id; }
347protected:
348 int id;
349};
350
351class QObject;
352
353class Q_CORE_EXPORT QChildEvent : public QEvent
354{
355public:
356 QChildEvent( Type type, QObject *child );
357 ~QChildEvent();
358 QObject *child() const { return c; }
359 bool added() const { return type() == ChildAdded; }
360#ifdef QT3_SUPPORT
361 QT3_SUPPORT bool inserted() const { return type() == ChildInserted; }
362#endif
363 bool polished() const { return type() == ChildPolished; }
364 bool removed() const { return type() == ChildRemoved; }
365protected:
366 QObject *c;
367};
368
369#ifdef QT3_SUPPORT
370class Q_CORE_EXPORT QCustomEvent : public QEvent
371{
372public:
373 QT3_SUPPORT_CONSTRUCTOR QCustomEvent(int type, void *data = 0);
374 ~QCustomEvent();
375 QT3_SUPPORT void *data() const { return d; }
376 QT3_SUPPORT void setData(void* aData) { d = reinterpret_cast<QEventPrivate *>(aData); }
377};
378#endif
379
380class Q_CORE_EXPORT QDynamicPropertyChangeEvent : public QEvent
381{
382public:
383 QDynamicPropertyChangeEvent(const QByteArray &name);
384 ~QDynamicPropertyChangeEvent();
385
386 inline QByteArray propertyName() const { return n; }
387
388private:
389 QByteArray n;
390};
391
392QT_END_NAMESPACE
393
394QT_END_HEADER
395
396#endif // QCOREEVENT_H
397