diff --git a/sources/main.cpp b/sources/main.cpp index ee70a90ac..940aa4e16 100644 --- a/sources/main.cpp +++ b/sources/main.cpp @@ -21,7 +21,6 @@ #include "qetapp.h" #include "qetproject.h" #include "singleapplication.h" -#include "utils/macosxopenevent.h" #include "utils/qetsettings.h" #include @@ -217,10 +216,6 @@ QGuiApplication::setHighDpiScaleFactorRoundingPolicy(QetSettings::hdpiScaleFacto SingleApplication app(argc, argv, true); #ifdef Q_OS_MACOS - //Handle the opening of QET when user double click on a .qet .elmt .tbt file - //or drop these same files to the QET icon of the dock - MacOSXOpenEvent open_event; - app.installEventFilter(&open_event); app.setStyle(QStyleFactory::create("Fusion")); #endif @@ -238,6 +233,13 @@ QGuiApplication::setHighDpiScaleFactorRoundingPolicy(QetSettings::hdpiScaleFacto QETApp qetapp; QETApp::instance()->installEventFilter(&qetapp); +#ifdef Q_OS_MACOS + //Handle the opening of QET when user double click on a .qet .elmt .tbt file + //or drop these same files to the QET icon of the dock. + //Installed here (after QETApp is fully constructed, before app.exec()) + //so there is no race: no QFileOpenEvent can be delivered before this point. + app.installEventFilter(&qetapp); +#endif QObject::connect(&app, &SingleApplication::receivedMessage, &qetapp, &QETApp::receiveMessage); diff --git a/sources/qetapp.cpp b/sources/qetapp.cpp index 3b95551e5..140e1e023 100644 --- a/sources/qetapp.cpp +++ b/sources/qetapp.cpp @@ -2625,14 +2625,17 @@ void QETApp::fetchWindowStats( #ifdef Q_OS_DARWIN /** Gere les evenements, en particulier l'evenement FileOpen sous MacOs. + Installe comme event filter sur QApplication dans main(), une fois + QETApp construite (voir main.cpp). + @param object Objet cible de l'evenement @param e Evenement a gerer */ -bool QETApp::eventFiltrer(QObject *object, QEvent *e) { +bool QETApp::eventFilter(QObject *object, QEvent *e) { // gere l'ouverture de fichiers (sous MacOs) if (e -> type() == QEvent::FileOpen) { // nom du fichier a ouvrir QString filename = static_cast(e) -> file(); - openFiles(QStringList() << filename); + openFiles(QETArguments(QStringList() << filename)); return(true); } else { return QObject::eventFilter(object, e); diff --git a/sources/qetapp.h b/sources/qetapp.h index 2f4ecc363..512fff961 100644 --- a/sources/qetapp.h +++ b/sources/qetapp.h @@ -178,10 +178,9 @@ class QETApp : public QObject static QTextOrientationSpinBoxWidget *createTextOrientationSpinBoxWidget(); static TitleBlockTemplate *defaultTitleBlockTemplate(); - protected: - #ifdef Q_OS_DARWIN - bool eventFiltrer(QObject *object, QEvent *); + public: + bool eventFilter(QObject *object, QEvent *) override; #endif // attributes