aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/filter.cpp5
-rw-r--r--src/main/filter.h1
-rw-r--r--src/main/main.cpp1
3 files changed, 7 insertions, 0 deletions
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<QFileOpenEvent *>(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)));