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