diff --git a/es-app/src/FileData.h b/es-app/src/FileData.h index e449297f7..f3fc3d15a 100644 --- a/es-app/src/FileData.h +++ b/es-app/src/FileData.h @@ -12,16 +12,14 @@ #define ES_APP_FILE_DATA_H #include "MetaData.h" +#include "SystemData.h" +#include "Window.h" #include "utils/FileSystemUtil.h" #include "utils/StringUtil.h" #include #include -class SystemData; -class Window; -struct SystemEnvironmentData; - enum FileType { GAME = 1, // Cannot have children. FOLDER = 2, @@ -69,6 +67,10 @@ public: const std::vector& getChildren() const { return mChildren; } const std::vector& getFilteredChildren() const { return mFilteredChildren; } SystemData* getSystem() const { return mSystem; } + SystemData* getSourceSystem() + { + return (mSourceFileData != nullptr ? mSourceFileData->mSystem : mSystem); + } SystemEnvironmentData* getSystemEnvData() const { return mEnvData; } // These functions are used by GameSelectorComponent. diff --git a/es-app/src/views/GamelistView.cpp b/es-app/src/views/GamelistView.cpp index 0bb12be93..571d14ff3 100644 --- a/es-app/src/views/GamelistView.cpp +++ b/es-app/src/views/GamelistView.cpp @@ -895,14 +895,16 @@ void GamelistView::updateView(const CursorState& state) else if (metadata == "altemulator") return file->metadata.get("altemulator"); else if (metadata == "emulator") - return (file->metadata.get("altemulator") != "" ? - file->metadata.get("altemulator") : - (file->getSystem()->getAlternativeEmulator() != "" ? - file->getSystem()->getAlternativeEmulator() : - file->getSystem() - ->getSystemEnvData() - ->mLaunchCommands.front() - .second)); + return (file->getType() == FOLDER) ? + "" : + (file->metadata.get("altemulator") != "" ? + file->metadata.get("altemulator") : + (file->getSourceSystem()->getAlternativeEmulator() != "" ? + file->getSourceSystem()->getAlternativeEmulator() : + file->getSourceSystem() + ->getSystemEnvData() + ->mLaunchCommands.front() + .second)); else if (metadata == "systemName") return file->getSystem()->getName(); else if (metadata == "systemFullname") diff --git a/es-app/src/views/SystemView.cpp b/es-app/src/views/SystemView.cpp index fb0b8fa3a..056075ce6 100644 --- a/es-app/src/views/SystemView.cpp +++ b/es-app/src/views/SystemView.cpp @@ -1300,10 +1300,13 @@ void SystemView::updateGameSelectors() text->setValue( games.at(gameSelectorEntry)->metadata.get("altemulator") != "" ? games.at(gameSelectorEntry)->metadata.get("altemulator") : - (games.at(gameSelectorEntry)->getSystem()->getAlternativeEmulator() != "" ? - games.at(gameSelectorEntry)->getSystem()->getAlternativeEmulator() : + (games.at(gameSelectorEntry)->getSourceSystem()->getAlternativeEmulator() != + "" ? games.at(gameSelectorEntry) - ->getSystem() + ->getSourceSystem() + ->getAlternativeEmulator() : + games.at(gameSelectorEntry) + ->getSourceSystem() ->getSystemEnvData() ->mLaunchCommands.front() .second));