summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2012-01-20 08:57:17 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-20 14:17:41 +0100
commit0f8ad242fb9c82e542ace1d2595038edf87f7b3d (patch)
tree3506648121a2d62408829dfad37c8ffa0e1a570c /src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp
parentc274ea7cf5e11ade0a5812e3080baa671d012524 (diff)
Add a virtual sendPostedEvents() to QEventDispatcherWin32.
Reimplement this in QWindowGuiEventDispatcher to send both Qt posted events and queued QPA window system events. We need to do this at a well defined place, instead of sending events outside of the eventloop from the Windows proc. This fixes various hangs for example in tst_qinputdialog, which used a 0-timer to close a dialog. Change-Id: I64e0b8f1209fb434059a7fa667ed585902c19db4 Initial-patch-by: bhughes <bradley.hughes@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp')
-rw-r--r--src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp b/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp
index cd5d28317e..4dd409a2ab 100644
--- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp
+++ b/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp
@@ -97,6 +97,13 @@ bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags fl
return rc;
}
+void QWindowsGuiEventDispatcher::sendPostedEvents()
+{
+ QWindowsGuiEventDispatcher::DispatchContext context = currentDispatchContext();
+ Q_ASSERT(context.first != 0);
+ QWindowSystemInterface::sendWindowSystemEvents(context.first, context.second);
+}
+
QWindowsGuiEventDispatcher::DispatchContext QWindowsGuiEventDispatcher::currentDispatchContext()
{
const DispatchContextStack &stack = *dispatchContextStack();