From 80e209df42c091fabd03c229aea5e49826c44b9b Mon Sep 17 00:00:00 2001 From: selsta Date: Tue, 20 Jan 2026 20:53:20 +0100 Subject: filter: intercept quit event to avoid deadlock --- src/main/filter.cpp | 5 +++++ src/main/filter.h | 1 + src/main/main.cpp | 1 + 3 files changed, 7 insertions(+) (limited to 'src') diff --git a/src/main/filter.cpp b/src/main/filter.cpp index 1f8155a9..a68f4cac 100644 --- a/src/main/filter.cpp +++ b/src/main/filter.cpp @@ -38,6 +38,11 @@ filter::filter(QObject *parent) : } bool filter::eventFilter(QObject *obj, QEvent *ev) { + if (ev->type() == QEvent::Quit) { + emit quitRequested(); + return true; + } + // macOS sends fileopen signal for incoming uri handlers if (ev->type() == QEvent::FileOpen) { QFileOpenEvent *openEvent = static_cast(ev); diff --git a/src/main/filter.h b/src/main/filter.h index 5c5bf57a..6ed643d2 100644 --- a/src/main/filter.h +++ b/src/main/filter.h @@ -44,6 +44,7 @@ protected: bool eventFilter(QObject *obj, QEvent *ev); signals: + void quitRequested(); void sequencePressed(const QVariant &o, const QVariant &seq); void sequenceReleased(const QVariant &o, const QVariant &seq); void mousePressed(const QVariant &o, const QVariant &x, const QVariant &y); diff --git a/src/main/main.cpp b/src/main/main.cpp index 38901d3f..7ed9e61c 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -562,6 +562,7 @@ Verify update binary using 'shasum'-compatible (SHA256 algo) output signed by tw qCritical() << "QrCodeScanner : something went wrong !"; #endif + QObject::connect(eventFilter, &filter::quitRequested, rootObject, [rootObject]{ QMetaObject::invokeMethod(rootObject, "gracefulQuit", Qt::QueuedConnection); }); QObject::connect(eventFilter, SIGNAL(sequencePressed(QVariant,QVariant)), rootObject, SLOT(sequencePressed(QVariant,QVariant))); QObject::connect(eventFilter, SIGNAL(sequenceReleased(QVariant,QVariant)), rootObject, SLOT(sequenceReleased(QVariant,QVariant))); QObject::connect(eventFilter, SIGNAL(mousePressed(QVariant,QVariant,QVariant)), rootObject, SLOT(mousePressed(QVariant,QVariant,QVariant))); -- cgit v1.2.3