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>bb10
parent
d48d83a1ac
commit
cc7d085ca2
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue