forked from qt-creator/qt-creator
GlobalFileChangeBlocker: Don't install event filter on qApp
Connect to applicationStateChanged() signal instead. Change-Id: I95ccabd06233902400bda0c01ea89b1c7cdf0e92 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -26,14 +26,15 @@
|
|||||||
#include "globalfilechangeblocker.h"
|
#include "globalfilechangeblocker.h"
|
||||||
#include "qtcassert.h"
|
#include "qtcassert.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QGuiApplication>
|
||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
|
|
||||||
GlobalFileChangeBlocker::GlobalFileChangeBlocker()
|
GlobalFileChangeBlocker::GlobalFileChangeBlocker()
|
||||||
{
|
{
|
||||||
m_blockedState = QApplication::applicationState() != Qt::ApplicationActive;
|
m_blockedState = QGuiApplication::applicationState() != Qt::ApplicationActive;
|
||||||
qApp->installEventFilter(this);
|
connect(qApp, &QGuiApplication::applicationStateChanged,
|
||||||
|
this, &GlobalFileChangeBlocker::applicationStateChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalFileChangeBlocker *GlobalFileChangeBlocker::instance()
|
GlobalFileChangeBlocker *GlobalFileChangeBlocker::instance()
|
||||||
@@ -48,19 +49,12 @@ void GlobalFileChangeBlocker::forceBlocked(bool blocked)
|
|||||||
++m_forceBlocked;
|
++m_forceBlocked;
|
||||||
else if (QTC_GUARD(m_forceBlocked > 0))
|
else if (QTC_GUARD(m_forceBlocked > 0))
|
||||||
--m_forceBlocked;
|
--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)
|
const bool blocked = m_forceBlocked || (state != Qt::ApplicationActive);
|
||||||
emitIfChanged();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GlobalFileChangeBlocker::emitIfChanged()
|
|
||||||
{
|
|
||||||
const bool blocked = m_forceBlocked || (QApplication::applicationState() != Qt::ApplicationActive);
|
|
||||||
if (blocked != m_blockedState) {
|
if (blocked != m_blockedState) {
|
||||||
emit stateChanged(blocked);
|
emit stateChanged(blocked);
|
||||||
m_blockedState = blocked;
|
m_blockedState = blocked;
|
||||||
|
|||||||
@@ -45,8 +45,7 @@ signals:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
GlobalFileChangeBlocker();
|
GlobalFileChangeBlocker();
|
||||||
bool eventFilter(QObject *obj, QEvent *e) override;
|
void applicationStateChanged(Qt::ApplicationState state);
|
||||||
void emitIfChanged();
|
|
||||||
|
|
||||||
int m_forceBlocked = 0;
|
int m_forceBlocked = 0;
|
||||||
bool m_blockedState = false;
|
bool m_blockedState = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user