summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/eventdispatchers
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@digia.com>2012-11-20 18:04:42 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-21 11:03:48 +0100
commitcc7d085ca21bff029e1a67b92b4facebfdc51c6f (patch)
treef99560f82cbbc68ed2a064f256f819fe94b32c39 /src/platformsupport/eventdispatchers
parentd48d83a1ac6761ed8481aba8875a6c7d99ae3f3a (diff)
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.cpp18
-rw-r--r--src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h3
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;