diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 3ab2f59661d..8c429150a85 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -441,10 +441,12 @@ void QWindowSystemInterfacePrivate::removeWindowSystemEvent(WindowSystemEvent *e windowSystemEventQueue.remove(event); } -void QWindowSystemInterfacePrivate::handleWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *ev) +bool QWindowSystemInterfacePrivate::handleWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *ev) { + bool accepted = true; if (synchronousWindowSystemEvents) { QGuiApplicationPrivate::processWindowSystemEvent(ev); + accepted = ev->eventAccepted; delete ev; } else { windowSystemEventQueue.append(ev); @@ -452,6 +454,7 @@ void QWindowSystemInterfacePrivate::handleWindowSystemEvent(QWindowSystemInterfa if (dispatcher) dispatcher->wakeUp(); } + return accepted; } void QWindowSystemInterface::registerTouchDevice(QTouchDevice *device) diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h index cbc3bad7cda..cc0ca6bf812 100644 --- a/src/gui/kernel/qwindowsysteminterface_p.h +++ b/src/gui/kernel/qwindowsysteminterface_p.h @@ -101,7 +101,7 @@ public: }; explicit WindowSystemEvent(EventType t) - : type(t), flags(0) { } + : type(t), flags(0), eventAccepted(true) { } virtual ~WindowSystemEvent() { } bool synthetic() const { return flags & Synthetic; } @@ -109,6 +109,7 @@ public: EventType type; int flags; + bool eventAccepted; }; class CloseEvent : public WindowSystemEvent { @@ -480,7 +481,7 @@ public: static WindowSystemEvent *getNonUserInputWindowSystemEvent(); static WindowSystemEvent *peekWindowSystemEvent(EventType t); static void removeWindowSystemEvent(WindowSystemEvent *event); - static void handleWindowSystemEvent(WindowSystemEvent *ev); + static bool handleWindowSystemEvent(WindowSystemEvent *ev); static QElapsedTimer eventTime; static bool synchronousWindowSystemEvents;