From 9a161b6700f39756bda0089e639cb92f39b70402 Mon Sep 17 00:00:00 2001 From: Alex Trotsenko Date: Wed, 18 Nov 2020 18:35:27 +0200 Subject: [PATCH] Fix event() chaining in QWinEventNotifier We should return the result of the call of the base implementation for all events that we did not handle. Also, QObject::event() does not actually activate any filters, so the comment was inaccurate as well. Change-Id: I9eb2f9a93a6b53a1afd035433615bcc0ee8cbf2c Reviewed-by: Oswald Buddenhagen --- src/corelib/kernel/qwineventnotifier.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp index d3be82db58e..f9e91e73d7c 100644 --- a/src/corelib/kernel/qwineventnotifier.cpp +++ b/src/corelib/kernel/qwineventnotifier.cpp @@ -211,15 +211,16 @@ void QWinEventNotifier::setEnabled(bool enable) bool QWinEventNotifier::event(QEvent * e) { Q_D(QWinEventNotifier); - if (e->type() == QEvent::ThreadChange) { + + switch (e->type()) { + case QEvent::ThreadChange: if (d->enabled) { QMetaObject::invokeMethod(this, "setEnabled", Qt::QueuedConnection, Q_ARG(bool, true)); setEnabled(false); } - } - QObject::event(e); // will activate filters - if (e->type() == QEvent::WinEventAct) { + break; + case QEvent::WinEventAct: // Emit notification, but only if the event has not been invalidated // since by the notifier being disabled, even if it was re-enabled // again. @@ -233,8 +234,10 @@ bool QWinEventNotifier::event(QEvent * e) d->registerWaitObject(); } return true; + default: + break; } - return false; + return QObject::event(e); } void CALLBACK QWinEventNotifierPrivate::wfsoCallback(void *context, BOOLEAN /*ignore*/)