From 7d75a9218cdeb3e4877f2b80e93d573083ad268f Mon Sep 17 00:00:00 2001 From: Mefiresu <15063879+Mefiresu@users.noreply.github.com> Date: Sat, 20 Jul 2024 12:12:53 +0200 Subject: [PATCH] macOS: Fix build + Enable running game from .app --- RetroEDv2/gamemanager.cpp | 2 +- RetroEDv2/tools/sceneeditor.cpp | 7 +++++++ RetroEDv2/tools/sceneeditorv5.cpp | 9 ++++++++- RetroEDv2/tools/sceneviewer.cpp | 4 ++-- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/RetroEDv2/gamemanager.cpp b/RetroEDv2/gamemanager.cpp index 1f25f84..7ebf35d 100644 --- a/RetroEDv2/gamemanager.cpp +++ b/RetroEDv2/gamemanager.cpp @@ -30,7 +30,7 @@ GameManager::GameManager(QWidget *parent) : QDialog(parent), ui(new Ui::GameMana #if defined(Q_OS_WIN) QFileDialog filedialog(this, tr("Open Executable"), "", "Windows Executables (*.exe);;All Files (*)"); -#elif defined(Q_OS_MAC) +#elif defined(Q_OS_MACOS) QFileDialog filedialog(this, tr("Open Executable"), "", "Mac OS Executables (*.app);;All Files (*)"); #else diff --git a/RetroEDv2/tools/sceneeditor.cpp b/RetroEDv2/tools/sceneeditor.cpp index 76f8c39..46d95e8 100644 --- a/RetroEDv2/tools/sceneeditor.cpp +++ b/RetroEDv2/tools/sceneeditor.cpp @@ -204,7 +204,14 @@ SceneEditor::SceneEditor(QWidget *parent) : QWidget(parent), ui(new Ui::SceneEdi args << "console=true;" << QString("stage=%1;").arg(argInitStage) << QString("scene=%1;").arg(argInitScene); QProcess proc; +#ifdef Q_OS_MACOS + // Run with "open" so that .app can work + proc.setProgram("open"); + QStringList openArgs({"-a", gamePath, "--args"}); + args = openArgs + args; +#else proc.setProgram(gamePath); +#endif proc.setWorkingDirectory(QFileInfo(dataPath).absolutePath()); proc.setArguments(args); proc.startDetached(); diff --git a/RetroEDv2/tools/sceneeditorv5.cpp b/RetroEDv2/tools/sceneeditorv5.cpp index d274098..14d88ed 100644 --- a/RetroEDv2/tools/sceneeditorv5.cpp +++ b/RetroEDv2/tools/sceneeditorv5.cpp @@ -185,7 +185,14 @@ SceneEditorv5::SceneEditorv5(QWidget *parent) : QWidget(parent), ui(new Ui::Scen args << "console=true;" << QString("stage=%1;").arg(argInitStage) << QString("scene=%1;").arg(argInitScene) << QString("filter=%1;").arg(filterVal); QProcess proc; +#ifdef Q_OS_MACOS + // Run with "open" so that .app can work + proc.setProgram("open"); + QStringList openArgs({"-a", gamePath, "--args"}); + args = openArgs + args; +#else proc.setProgram(gamePath); +#endif proc.setWorkingDirectory(QFileInfo(dataPath).absolutePath()); proc.setArguments(args); proc.startDetached(); @@ -2958,7 +2965,7 @@ void SceneEditorv5::CreateNewScene(QString scnPath, bool prePlus, bool loadGC, Q }; #ifdef Q_OS_WIN int definedOS = 0; -#elif Q_OS_MAC +#elif defined(Q_OS_MACOS) int definedOS = 1; #else int definedOS = 2; diff --git a/RetroEDv2/tools/sceneviewer.cpp b/RetroEDv2/tools/sceneviewer.cpp index 5d9b788..8e019c3 100644 --- a/RetroEDv2/tools/sceneviewer.cpp +++ b/RetroEDv2/tools/sceneviewer.cpp @@ -362,9 +362,9 @@ void SceneViewer::updateScene() if (engineRevision != 1) status += QString(", Filter: %1").arg(sceneFilter); if (!v5Editor->gameLinks.count()){ -#ifdef Q_OS_WIN +#if defined(Q_OS_WIN) gameLinkState = "No Game.dll found"; -#elif Q_OS_MAC +#elif defined(Q_OS_MACOS) gameLinkState = "No Game.dylib found"; #else gameLinkState = "No libGame.so found";