diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 74868077b3..0bc0647835 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -2746,7 +2746,12 @@ bool QApplication::notify(QObject *receiver, QEvent *e) } bool res = false; - if (!receiver->isWidgetType()) { + if (receiver->isWindowType()) { + res = d->notify_helper(receiver, e); + // We don't call QGuiApplication::notify here, so we need to duplicate the logic + if (res && e->type() == QEvent::Close) + d->maybeQuitOnLastWindowClosed(static_cast(receiver)); + } else if (!receiver->isWidgetType()) { res = d->notify_helper(receiver, e); } else switch (e->type()) { case QEvent::ShortcutOverride: @@ -3342,10 +3347,6 @@ bool QApplication::notify(QObject *receiver, QEvent *e) break; } - // We don't call QGuiApplication::notify here, so we need to duplicate the logic - if (e->type() == QEvent::Close && receiver->isWindowType() && res) - d->maybeQuitOnLastWindowClosed(static_cast(receiver)); - return res; }