diff --git a/apps/launcher/datafilespage.cpp b/apps/launcher/datafilespage.cpp
index 9268c8e142..fe6d96b51a 100644
--- a/apps/launcher/datafilespage.cpp
+++ b/apps/launcher/datafilespage.cpp
@@ -44,10 +44,10 @@ namespace
QDir currentDir(path);
if (!currentDir.entryInfoList(fileFilter, QDir::Files).empty()
|| !currentDir.entryInfoList(dirFilter, QDir::Dirs | QDir::NoDotAndDotDot).empty())
- dirs.push_back(currentDir.absolutePath());
+ dirs.push_back(currentDir.canonicalPath());
for (const auto& subdir : currentDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot))
- contentSubdirs(subdir.absoluteFilePath(), dirs);
+ contentSubdirs(subdir.canonicalFilePath(), dirs);
}
}
@@ -236,6 +236,10 @@ void Launcher::DataFilesPage::populateFileViews(const QString& contentModelName)
if (!globalDataDir.isEmpty())
directories.insert(0, globalDataDir);
+ // normalize user supplied directories: resolve symlink, convert to native separator, make absolute
+ for (auto& currentDir : directories)
+ currentDir = QDir(QDir::cleanPath(currentDir)).canonicalPath();
+
// add directories, archives and content files
directories.removeDuplicates();
for (const auto& currentDir : directories)
@@ -361,7 +365,7 @@ QStringList Launcher::DataFilesPage::selectedDirectoriesPaths() const
QStringList dirList;
for (int i = 0; i < ui.directoryListWidget->count(); ++i)
{
- if (ui.directoryListWidget->item(i)->background() != Qt::gray)
+ if (ui.directoryListWidget->item(i)->flags() & Qt::ItemIsEnabled)
dirList.append(ui.directoryListWidget->item(i)->text());
}
return dirList;
@@ -581,7 +585,7 @@ QString Launcher::DataFilesPage::selectDirectory()
if (fileDialog.exec() == QDialog::Rejected)
return {};
- return fileDialog.selectedFiles()[0];
+ return QDir(fileDialog.selectedFiles()[0]).canonicalPath();
}
diff --git a/files/ui/datafilespage.ui b/files/ui/datafilespage.ui
index dfcf02fced..813d0109ee 100644
--- a/files/ui/datafilespage.ui
+++ b/files/ui/datafilespage.ui
@@ -17,8 +17,25 @@
-
- 2
+ 0
+
+
+ Content Files
+
+
+
-
+
+
+ -
+
+
+ <html><head/><body><p><span style=" font-style:italic;">note: content files that are not part of current Content List are </span><span style=" font-style:italic; background-color:#00ff00;">highlighted</span></p></body></html>
+
+
+
+
+
Data Directories
@@ -137,23 +154,6 @@
-
-
- Content Files
-
-
- -
-
-
- -
-
-
- <html><head/><body><p><span style=" font-style:italic;">note: content files that are not part of current Content List are </span><span style=" font-style:italic; background-color:#00ff00;">highlighted</span></p></body></html>
-
-
-
-
-
Navigation mesh cache
@@ -212,7 +212,7 @@
-
-
-
+
Max size
@@ -261,7 +261,7 @@
false
-
+
6