diff --git a/src/libs/utils/globalfilechangeblocker.cpp b/src/libs/utils/globalfilechangeblocker.cpp index 060e0f210d5..01f5709d0bf 100644 --- a/src/libs/utils/globalfilechangeblocker.cpp +++ b/src/libs/utils/globalfilechangeblocker.cpp @@ -26,14 +26,15 @@ #include "globalfilechangeblocker.h" #include "qtcassert.h" -#include +#include namespace Utils { GlobalFileChangeBlocker::GlobalFileChangeBlocker() { - m_blockedState = QApplication::applicationState() != Qt::ApplicationActive; - qApp->installEventFilter(this); + m_blockedState = QGuiApplication::applicationState() != Qt::ApplicationActive; + connect(qApp, &QGuiApplication::applicationStateChanged, + this, &GlobalFileChangeBlocker::applicationStateChanged); } GlobalFileChangeBlocker *GlobalFileChangeBlocker::instance() @@ -48,19 +49,12 @@ void GlobalFileChangeBlocker::forceBlocked(bool blocked) ++m_forceBlocked; else if (QTC_GUARD(m_forceBlocked > 0)) --m_forceBlocked; - emitIfChanged(); + applicationStateChanged(QGuiApplication::applicationState()); } -bool GlobalFileChangeBlocker::eventFilter(QObject *obj, QEvent *e) +void GlobalFileChangeBlocker::applicationStateChanged(Qt::ApplicationState state) { - if (obj == qApp && e->type() == QEvent::ApplicationStateChange) - emitIfChanged(); - return false; -} - -void GlobalFileChangeBlocker::emitIfChanged() -{ - const bool blocked = m_forceBlocked || (QApplication::applicationState() != Qt::ApplicationActive); + const bool blocked = m_forceBlocked || (state != Qt::ApplicationActive); if (blocked != m_blockedState) { emit stateChanged(blocked); m_blockedState = blocked; diff --git a/src/libs/utils/globalfilechangeblocker.h b/src/libs/utils/globalfilechangeblocker.h index 0f36dfce92f..9d683797ce4 100644 --- a/src/libs/utils/globalfilechangeblocker.h +++ b/src/libs/utils/globalfilechangeblocker.h @@ -45,8 +45,7 @@ signals: private: GlobalFileChangeBlocker(); - bool eventFilter(QObject *obj, QEvent *e) override; - void emitIfChanged(); + void applicationStateChanged(Qt::ApplicationState state); int m_forceBlocked = 0; bool m_blockedState = false;