diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-11-20 16:53:27 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-21 16:36:50 +0100 |
commit | 9b49c0561e0b13caeee462d931dc22008e3c4587 (patch) | |
tree | 14570f24b14a56ea8565ac86a1eb219cf7a97649 /src/gui/kernel/qwindowsysteminterface.cpp | |
parent | 31c6d554458b27c88f432c2b9c37baacf5e4b454 (diff) |
Handle QEventLoop::ExcludeUserInputEvents in QWindowSystemInterface.
Add a flag indicating user input events to the event type and
leave those events in the queue if
QEventLoop::ExcludeUserInputEvents is set.
Task-number: QTBUG-27595
Change-Id: Ib41b826ef3be19253cd582d9894dd7c87953711f
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src/gui/kernel/qwindowsysteminterface.cpp')
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/gui/kernel/qwindowsysteminterface.cpp b/src/gui/kernel/qwindowsysteminterface.cpp index acc6eace99..7ba4281646 100644 --- a/src/gui/kernel/qwindowsysteminterface.cpp +++ b/src/gui/kernel/qwindowsysteminterface.cpp @@ -344,6 +344,11 @@ QWindowSystemInterfacePrivate::WindowSystemEvent * QWindowSystemInterfacePrivate return windowSystemEventQueue.takeFirstOrReturnNull(); } +QWindowSystemInterfacePrivate::WindowSystemEvent *QWindowSystemInterfacePrivate::getNonUserInputWindowSystemEvent() +{ + return windowSystemEventQueue.takeFirstNonUserInputOrReturnNull(); +} + QWindowSystemInterfacePrivate::WindowSystemEvent *QWindowSystemInterfacePrivate::peekWindowSystemEvent(EventType t) { return windowSystemEventQueue.peekAtFirstOfType(t); @@ -520,20 +525,14 @@ bool QWindowSystemInterface::sendWindowSystemEventsImplementation(QEventLoop::Pr { int nevents = 0; - while (true) { - QWindowSystemInterfacePrivate::WindowSystemEvent *event; - if (!(flags & QEventLoop::ExcludeUserInputEvents) - && QWindowSystemInterfacePrivate::windowSystemEventsQueued() > 0) { - // process a pending user input event - event = QWindowSystemInterfacePrivate::getWindowSystemEvent(); - if (!event) - break; - } else { + while (QWindowSystemInterfacePrivate::windowSystemEventsQueued()) { + QWindowSystemInterfacePrivate::WindowSystemEvent *event = + (flags & QEventLoop::ExcludeUserInputEvents) ? + QWindowSystemInterfacePrivate::getNonUserInputWindowSystemEvent() : + QWindowSystemInterfacePrivate::getWindowSystemEvent(); + if (!event) break; - } - nevents++; - QGuiApplicationPrivate::processWindowSystemEvent(event); delete event; } |