From 6d70b7fa6a9cdf8ea59c7aa98f92249c5a4e0060 Mon Sep 17 00:00:00 2001 From: SulfurNitride Date: Wed, 18 Feb 2026 12:55:32 -0600 Subject: Fix fomod-plus image loading and settings file location on Linux Normalize Windows backslashes in fomod image paths so images like "fomod\MCM.png" resolve correctly on Linux. Move fomod-plus-settings.ini from QDir::currentPath() (home directory) to QStandardPaths::AppConfigLocation (Flatpak sandbox config dir). Co-Authored-By: Claude Opus 4.6 --- libs/installer_fomod_plus/installer/FomodInstallerWindow.cpp | 10 ++++++---- libs/installer_fomod_plus/installer/ui/UIHelper.cpp | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'libs') diff --git a/libs/installer_fomod_plus/installer/FomodInstallerWindow.cpp b/libs/installer_fomod_plus/installer/FomodInstallerWindow.cpp index e5f2e18..bd1c0bc 100644 --- a/libs/installer_fomod_plus/installer/FomodInstallerWindow.cpp +++ b/libs/installer_fomod_plus/installer/FomodInstallerWindow.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -93,8 +94,9 @@ void FomodInstallerWindow::closeEvent(QCloseEvent* event) void FomodInstallerWindow::saveGeometryAndState() const { - const auto cwd = QDir::currentPath(); - QSettings settings(cwd + "/fomod-plus-settings.ini", QSettings::IniFormat); + const auto configDir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); + QDir().mkpath(configDir); + QSettings settings(configDir + "/fomod-plus-settings.ini", QSettings::IniFormat); settings.setValue("windowGeometry", saveGeometry()); settings.setValue("centerSplitState", mCenterRow->saveState()); settings.setValue("leftSplitState", mLeftPane->saveState()); @@ -102,8 +104,8 @@ void FomodInstallerWindow::saveGeometryAndState() const void FomodInstallerWindow::restoreGeometryAndState() { - const auto cwd = QDir::currentPath(); - const QSettings settings(cwd + "/fomod-plus-settings.ini", QSettings::IniFormat); + const auto configDir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); + const QSettings settings(configDir + "/fomod-plus-settings.ini", QSettings::IniFormat); restoreGeometry(settings.value("windowGeometry").toByteArray()); mCenterRow->restoreState(settings.value("centerSplitState").toByteArray()); mLeftPane->restoreState(settings.value("leftSplitState").toByteArray()); diff --git a/libs/installer_fomod_plus/installer/ui/UIHelper.cpp b/libs/installer_fomod_plus/installer/ui/UIHelper.cpp index 2312fd1..56aff85 100644 --- a/libs/installer_fomod_plus/installer/ui/UIHelper.cpp +++ b/libs/installer_fomod_plus/installer/ui/UIHelper.cpp @@ -61,7 +61,10 @@ QLabel* UIHelper::createHyperlink(const QString& url, QWidget* parent = nullptr) QString UIHelper::getFullImagePath(const QString& fomodPath, const QString& imagePath) { - return QDir::tempPath() + "/" + fomodPath + "/" + imagePath; + // Fomod XMLs may use Windows backslashes in image paths (e.g. "fomod\MCM.png") + QString normalized = imagePath; + normalized.replace('\\', '/'); + return QDir::tempPath() + "/" + fomodPath + "/" + normalized; } void UIHelper::setGlobalAlignment(QBoxLayout* layout, const Qt::Alignment alignment) -- cgit v1.3.1