diff --git a/src/MainApplicationWindow.qml b/src/MainApplicationWindow.qml index d03d75d08f8945b78421f22df614e8d43b53aec2..9dd2360b3eca41866bb5628e7b13973e9670cda6 100644 --- a/src/MainApplicationWindow.qml +++ b/src/MainApplicationWindow.qml @@ -150,6 +150,9 @@ ApplicationWindow { // layoutManager to handle as much as possible. layoutManager.restoreWindowSettings() } + if (Qt.platform.os.toString() === "osx") { + MainApplication.setEventFilter() + } // This will trigger `visible = true`. windowSettingsLoaded = true diff --git a/src/mainapplication.cpp b/src/mainapplication.cpp index 02616e988ff914a74df257d8651e59f752577742..4c9de1c33e45f5275a70996638075627853efc80 100644 --- a/src/mainapplication.cpp +++ b/src/mainapplication.cpp @@ -445,3 +445,11 @@ MainApplication::cleanup() #endif QApplication::exit(0); } + +#ifdef Q_OS_MACOS +void +MainApplication::setEventFilter() +{ + installEventFilter(this); +} +#endif diff --git a/src/mainapplication.h b/src/mainapplication.h index 06597d3b3af26494ddbda51cbe4d51b63c8fe8db..ab899d047a2ec84fbfbc201a7e3e832abf982c0d 100644 --- a/src/mainapplication.h +++ b/src/mainapplication.h @@ -83,6 +83,18 @@ public: return runOptions_[opt]; }; +#ifdef Q_OS_MACOS + Q_INVOKABLE void setEventFilter(); + + bool eventFilter(QObject* object, QEvent* event) + { + if (event->type() == QEvent::ApplicationActivate) { + restoreApp(); + } + return QApplication::eventFilter(object, event); + } +#endif // Q_OS_MACOS + Q_SIGNALS: void closeRequested();