diff options
author | Oliver Wolff <oliver.wolff@digia.com> | 2012-11-20 18:04:42 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-21 11:03:48 +0100 |
commit | cc7d085ca21bff029e1a67b92b4facebfdc51c6f (patch) | |
tree | f99560f82cbbc68ed2a064f256f819fe94b32c39 /src/platformsupport/eventdispatchers | |
parent | d48d83a1ac6761ed8481aba8875a6c7d99ae3f3a (diff) | |
download | qtbase-cc7d085ca21bff029e1a67b92b4facebfdc51c6f.tar.gz |
QPAEventDispatcherGlib: Use correct flags when sending events
Instead of assuming that all events should be handled when
a user event occurs, userEventSourceDispatch has to use the
flags used in QPAEventDispatcherGlib::processEvents.
Task-number: QTBUG-27595
Change-Id: Ib13607f89f7d3207ec83ab26f7d59b3c59a28c4e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'src/platformsupport/eventdispatchers')
-rw-r--r-- | src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp | 18 | ||||
-rw-r--r-- | src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h | 3 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp b/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp index 584760a957..32d19ede46 100644 --- a/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp +++ b/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp @@ -71,9 +71,11 @@ static gboolean userEventSourceCheck(GSource *source) return userEventSourcePrepare(source, 0); } -static gboolean userEventSourceDispatch(GSource *, GSourceFunc, gpointer) +static gboolean userEventSourceDispatch(GSource *source, GSourceFunc, gpointer) { - QWindowSystemInterface::sendWindowSystemEvents(QEventLoop::AllEvents); + GUserEventSource *userEventSource = reinterpret_cast<GUserEventSource *>(source); + QPAEventDispatcherGlib *dispatcher = userEventSource->q; + QWindowSystemInterface::sendWindowSystemEvents(dispatcher->m_flags); return true; } @@ -89,9 +91,10 @@ static GSourceFuncs userEventSourceFuncs = { QPAEventDispatcherGlibPrivate::QPAEventDispatcherGlibPrivate(GMainContext *context) : QEventDispatcherGlibPrivate(context) { + Q_Q(QPAEventDispatcherGlib); userEventSource = reinterpret_cast<GUserEventSource *>(g_source_new(&userEventSourceFuncs, sizeof(GUserEventSource))); - userEventSource->q = 0; + userEventSource->q = q; g_source_set_can_recurse(&userEventSource->source, true); g_source_attach(&userEventSource->source, mainContext); } @@ -99,6 +102,7 @@ QPAEventDispatcherGlibPrivate::QPAEventDispatcherGlibPrivate(GMainContext *conte QPAEventDispatcherGlib::QPAEventDispatcherGlib(QObject *parent) : QEventDispatcherGlib(*new QPAEventDispatcherGlibPrivate, parent) + , m_flags(QEventLoop::AllEvents) { Q_D(QPAEventDispatcherGlib); d->userEventSource->q = this; @@ -113,4 +117,12 @@ QPAEventDispatcherGlib::~QPAEventDispatcherGlib() d->userEventSource = 0; } +bool QPAEventDispatcherGlib::processEvents(QEventLoop::ProcessEventsFlags flags) +{ + Q_D(QPAEventDispatcherGlib); + + m_flags = flags; + QEventDispatcherGlib::processEvents(m_flags); +} + QT_END_NAMESPACE diff --git a/src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h b/src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h index 46c62c62df..bc618259d0 100644 --- a/src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h +++ b/src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h @@ -68,6 +68,9 @@ class QPAEventDispatcherGlib : public QEventDispatcherGlib public: explicit QPAEventDispatcherGlib(QObject *parent = 0); ~QPAEventDispatcherGlib(); + + bool processEvents(QEventLoop::ProcessEventsFlags flags); + QEventLoop::ProcessEventsFlags m_flags; }; struct GUserEventSource; |