diff options
Diffstat (limited to 'src/yuzu')
| -rw-r--r-- | src/yuzu/game_list.cpp | 17 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 10 | 
2 files changed, 20 insertions, 7 deletions
diff --git a/src/yuzu/game_list.cpp b/src/yuzu/game_list.cpp index 6b0f07757..9e585b082 100644 --- a/src/yuzu/game_list.cpp +++ b/src/yuzu/game_list.cpp @@ -265,8 +265,17 @@ void GameList::ValidateEntry(const QModelIndex& item) {      if (file_path.isEmpty())          return;      std::string std_file_path(file_path.toStdString()); -    if (!FileUtil::Exists(std_file_path) || FileUtil::IsDirectory(std_file_path)) +    if (!FileUtil::Exists(std_file_path))          return; +    if (FileUtil::IsDirectory(std_file_path)) { +        QDir dir(std_file_path.c_str()); +        QStringList matching_main = dir.entryList(QStringList("main"), QDir::Files); +        if (matching_main.size() == 1) { +            emit GameChosen(dir.path() + DIR_SEP + matching_main[0]); +        } +        return; +    } +      // Users usually want to run a diffrent game after closing one      search_field->clear();      emit GameChosen(file_path); @@ -368,10 +377,10 @@ static bool IsExtractedNCAMain(const std::string& file_name) {      return QFileInfo(file_name.c_str()).fileName() == "main";  } -static QString FormatGameName(std::string physical_name) { -    QFileInfo fileInfo(physical_name.c_str()); +static QString FormatGameName(const std::string& physical_name) { +    QFileInfo file_info(physical_name.c_str());      if (IsExtractedNCAMain(physical_name)) { -        return fileInfo.dir().dirName(); +        return file_info.dir().path();      } else {          return QString::fromStdString(physical_name);      } diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index e2afe2131..97be548d7 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -13,6 +13,7 @@  #include <QMessageBox>  #include <QtGui>  #include <QtWidgets> +#include "common/common_paths.h"  #include "common/logging/backend.h"  #include "common/logging/filter.h"  #include "common/logging/log.h" @@ -568,9 +569,12 @@ void GMainWindow::OnMenuLoadFile() {  void GMainWindow::OnMenuLoadFolder() {      QDir dir = QFileDialog::getExistingDirectory(this, tr("Open Extracted ROM Directory")); -    QStringList matchingMain = dir.entryList(QStringList() << "main", QDir::Files); -    if (matchingMain.size() == 1) { -        BootGame(matchingMain[0]); +    QStringList matching_main = dir.entryList(QStringList("main"), QDir::Files); +    if (matching_main.size() == 1) { +        BootGame(dir.path() + DIR_SEP + matching_main[0]); +    } else { +        QMessageBox::warning(this, tr("Invalid Directory Selected"), +                             tr("The directory you have selected does not contain a 'main' file."));      }  }  | 
