From 92809575816be65eb942bbc119f4623e68060d4f Mon Sep 17 00:00:00 2001 From: elsid Date: Tue, 21 Mar 2023 01:30:47 +0100 Subject: [PATCH] Save original paths If directory path is a symlink it should be showed and written to config files as is. Between launcher runs the resulting canonical path may be different so the resolved path becomes outdated. --- apps/launcher/datafilespage.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/launcher/datafilespage.cpp b/apps/launcher/datafilespage.cpp index 32e96f399b..bbf6703b7e 100644 --- a/apps/launcher/datafilespage.cpp +++ b/apps/launcher/datafilespage.cpp @@ -231,14 +231,13 @@ void Launcher::DataFilesPage::populateFileViews(const QString& contentModelName) if (!globalDataDir.empty()) directories.insert(0, Files::pathToQString(globalDataDir)); - // normalize user supplied directories: resolve symlink, convert to native separator, make absolute - for (auto& currentDir : directories) - currentDir = QDir(QDir::cleanPath(currentDir)).canonicalPath(); - std::unordered_set visitedDirectories; for (const QString& currentDir : directories) { - if (!visitedDirectories.insert(currentDir).second) + // normalize user supplied directories: resolve symlink, convert to native separator, make absolute + const QString canonicalDirPath = QDir(QDir::cleanPath(currentDir)).canonicalPath(); + + if (!visitedDirectories.insert(canonicalDirPath).second) continue; // add new achives files presents in current directory @@ -247,7 +246,7 @@ void Launcher::DataFilesPage::populateFileViews(const QString& contentModelName) QString tooltip; // add content files presents in current directory - mSelector->addFiles(currentDir, mNewDataDirs.contains(currentDir)); + mSelector->addFiles(currentDir, mNewDataDirs.contains(canonicalDirPath)); // add current directory to list ui.directoryListWidget->addItem(currentDir); @@ -255,7 +254,7 @@ void Launcher::DataFilesPage::populateFileViews(const QString& contentModelName) auto* item = ui.directoryListWidget->item(row); // Display new content with green background - if (mNewDataDirs.contains(currentDir)) + if (mNewDataDirs.contains(canonicalDirPath)) { tooltip += "Will be added to the current profile\n"; item->setBackground(Qt::green);