diff options
Diffstat (limited to 'src')
8 files changed, 19 insertions, 30 deletions
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index 7b57313645..d62330083e 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -553,23 +553,12 @@ void QWindowSystemInterface::flushWindowSystemEvents() QWindowSystemInterfacePrivate::handleWindowSystemEvent(e); QWindowSystemInterfacePrivate::eventsFlushed.wait(&QWindowSystemInterfacePrivate::flushEventMutex); } else { - sendWindowSystemEventsImplementation(QEventLoop::AllEvents); + sendWindowSystemEvents(QEventLoop::AllEvents); } } bool QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::ProcessEventsFlags flags) { - QCoreApplication::sendPostedEvents(); // handle gui and posted events - return sendWindowSystemEventsImplementation(flags); -} - -void QWindowSystemInterface::setSynchronousWindowsSystemEvents(bool enable) -{ - QWindowSystemInterfacePrivate::synchronousWindowsSystemEvents = enable; -} - -bool QWindowSystemInterface::sendWindowSystemEventsImplementation(QEventLoop::ProcessEventsFlags flags) -{ int nevents = 0; while (QWindowSystemInterfacePrivate::windowSystemEventsQueued()) { @@ -587,6 +576,11 @@ bool QWindowSystemInterface::sendWindowSystemEventsImplementation(QEventLoop::Pr return (nevents > 0); } +void QWindowSystemInterface::setSynchronousWindowsSystemEvents(bool enable) +{ + QWindowSystemInterfacePrivate::synchronousWindowsSystemEvents = enable; +} + int QWindowSystemInterface::windowSystemEventsQueued() { return QWindowSystemInterfacePrivate::windowSystemEventsQueued(); diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index cac943cda1..c8e464f985 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -193,9 +193,6 @@ public: static void flushWindowSystemEvents(); static void deferredFlushWindowSystemEvents(); static int windowSystemEventsQueued(); - -private: - static bool sendWindowSystemEventsImplementation(QEventLoop::ProcessEventsFlags flags); }; #ifndef QT_NO_DEBUG_STREAM diff --git a/src/platformsupport/eventdispatchers/qeventdispatcher_cf.mm b/src/platformsupport/eventdispatchers/qeventdispatcher_cf.mm index 6442df715a..ed86a33782 100644 --- a/src/platformsupport/eventdispatchers/qeventdispatcher_cf.mm +++ b/src/platformsupport/eventdispatchers/qeventdispatcher_cf.mm @@ -388,6 +388,10 @@ void QEventDispatcherCoreFoundation::processPostedEvents() m_processEvents.processedPostedEvents = true; + qEventDispatcherDebug() << "Sending posted events for " << m_processEvents.flags; qIndent(); + QCoreApplication::sendPostedEvents(); + qUnIndent(); + qEventDispatcherDebug() << "Sending window system events for " << m_processEvents.flags; qIndent(); QWindowSystemInterface::sendWindowSystemEvents(m_processEvents.flags); qUnIndent(); diff --git a/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp b/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp index 20ef91c7d8..5e07832c07 100644 --- a/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp +++ b/src/platformsupport/eventdispatchers/qunixeventdispatcher.cpp @@ -67,13 +67,8 @@ QUnixEventDispatcherQPA::~QUnixEventDispatcherQPA() bool QUnixEventDispatcherQPA::processEvents(QEventLoop::ProcessEventsFlags flags) { - const bool didSendEvents = QWindowSystemInterface::sendWindowSystemEvents(flags); - - if (QEventDispatcherUNIX::processEvents(flags)) { - return true; - } - - return didSendEvents; + const bool didSendEvents = QEventDispatcherUNIX::processEvents(flags); + return QWindowSystemInterface::sendWindowSystemEvents(flags) || didSendEvents; } bool QUnixEventDispatcherQPA::hasPendingEvents() diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm index 9a661ffe5a..8dfaacdf13 100644 --- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm +++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm @@ -876,6 +876,7 @@ void QCocoaEventDispatcherPrivate::processPostedEvents() int serial = serialNumber.load(); if (!threadData->canWait || (serial != lastSerial)) { lastSerial = serial; + QCoreApplication::sendPostedEvents(); QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::AllEvents); } } diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp index 5b74ad3b8d..bce52963df 100644 --- a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp +++ b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp @@ -73,9 +73,9 @@ public: bool processEvents(QEventLoop::ProcessEventsFlags flags) { - bool didSendEvents = QWindowSystemInterface::sendWindowSystemEvents(flags); + bool didSendEvents = BaseEventDispatcher::processEvents(flags); - return BaseEventDispatcher::processEvents(flags) || didSendEvents; + return QWindowSystemInterface::sendWindowSystemEvents(flags) || didSendEvents; } bool hasPendingEvents() diff --git a/src/plugins/platforms/qnx/qqnxeventdispatcher_blackberry.cpp b/src/plugins/platforms/qnx/qqnxeventdispatcher_blackberry.cpp index 87ce64da5e..42fd0ed8bf 100644 --- a/src/plugins/platforms/qnx/qqnxeventdispatcher_blackberry.cpp +++ b/src/plugins/platforms/qnx/qqnxeventdispatcher_blackberry.cpp @@ -58,12 +58,8 @@ QQnxEventDispatcherBlackberry::~QQnxEventDispatcherBlackberry() bool QQnxEventDispatcherBlackberry::processEvents(QEventLoop::ProcessEventsFlags flags) { - const bool didSendEvents = QWindowSystemInterface::sendWindowSystemEvents(flags); - - if (QEventDispatcherBlackberry::processEvents(flags)) - return true; - - return didSendEvents; + const bool didSendEvents = QEventDispatcherBlackberry::processEvents(flags); + return QWindowSystemInterface::sendWindowSystemEvents(flags) || didSendEvents; } bool QQnxEventDispatcherBlackberry::hasPendingEvents() diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp b/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp index 0d7de2da39..6be71999f6 100644 --- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp +++ b/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp @@ -44,6 +44,7 @@ #include <qpa/qwindowsysteminterface.h> +#include <QtCore/QCoreApplication> #include <QtCore/QStack> #include <QtCore/QDebug> @@ -83,6 +84,7 @@ bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags fl void QWindowsGuiEventDispatcher::sendPostedEvents() { + QCoreApplication::sendPostedEvents(); QWindowSystemInterface::sendWindowSystemEvents(m_flags); } |