From 36f7e69aa8c8045c74f0604d18e8941829630c6e Mon Sep 17 00:00:00 2001 From: Phillip Stephens Date: Mon, 10 Jan 2022 21:20:50 -0800 Subject: [PATCH] Blender detection fixes --- hecl/lib/Blender/FindBlender.cpp | 5 +++-- metaforce-gui/MainWindow.cpp | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/hecl/lib/Blender/FindBlender.cpp b/hecl/lib/Blender/FindBlender.cpp index e14054747..733359d9b 100644 --- a/hecl/lib/Blender/FindBlender.cpp +++ b/hecl/lib/Blender/FindBlender.cpp @@ -86,7 +86,8 @@ std::optional FindBlender(int& major, int& minor) { auto progFiles = nowide::narrow(wProgFiles); for (const auto& version : SupportedVersions) { std::string blenderBinBuf = - fmt::format(FMT_STRING("{}\\Blender Foundation\\Blender {}.{}\\blender.exe"), progFiles, major, minor); + fmt::format(FMT_STRING("{}\\Blender Foundation\\Blender {}.{}\\blender.exe"), + progFiles, version.Major, version.Minor); if (RegFileExists(blenderBinBuf.c_str())) { blenderBin = std::move(blenderBinBuf); break; @@ -146,7 +147,7 @@ std::optional FindBlender(int& major, int& minor) { std::string command = std::string("\"") + blenderBin.value() + "\" --version"; FILE* fp = popen(command.c_str(), "r"); char versionBuf[256]; - size_t rdSize = fread(versionBuf, 1, 255, fp); + size_t rdSize = fread(&versionBuf[0], 1, 255, fp); versionBuf[rdSize] = '\0'; pclose(fp); diff --git a/metaforce-gui/MainWindow.cpp b/metaforce-gui/MainWindow.cpp index 305efaa1d..828dfe81e 100644 --- a/metaforce-gui/MainWindow.cpp +++ b/metaforce-gui/MainWindow.cpp @@ -540,7 +540,7 @@ void MainWindow::initSlots() { if (res == QFileDialog::Rejected) return; - if (dialog.selectedFiles().size() <= 0) + if (dialog.selectedFiles().empty()) return; setPath(dialog.selectedFiles().at(0)); @@ -549,7 +549,13 @@ void MainWindow::initSlots() { connect(m_ui->blenderEdit, &QLineEdit::editingFinished, [this]() { setBlenderOverride(m_ui->blenderEdit->text()); }); connect(m_ui->blenderBtn, &QPushButton::clicked, [this]() { FileDirDialog dialog(this, QFileDialog::ExistingFiles); + +#ifdef Q_OS_WIN + dialog.setNameFilter(QStringLiteral("blender.exe")); +#else dialog.setNameFilter(QStringLiteral("blender")); +#endif + dialog.setDirectory(m_path); dialog.setWindowTitle(tr("Select Blender binary")); int res = dialog.exec();