aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/src/modlistviewactions.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/src/modlistviewactions.cpp b/src/src/modlistviewactions.cpp
index 040da79..df8417e 100644
--- a/src/src/modlistviewactions.cpp
+++ b/src/src/modlistviewactions.cpp
@@ -1377,14 +1377,18 @@ void ModListViewActions::moveOverwriteContentsTo(const QString& absolutePath) co
}
// Clean up empty directories left behind in overwrite.
+ // Sort by path length descending so leaf dirs are removed before parents.
if (movedCount > 0) {
QDirIterator dirIter(overwritePath, QDir::Dirs | QDir::NoDotAndDotDot,
QDirIterator::Subdirectories);
- QStringList emptyDirs;
+ QStringList dirs;
while (dirIter.hasNext()) {
- emptyDirs.prepend(dirIter.next()); // Reverse order for leaf-first deletion.
+ dirs.append(dirIter.next());
}
- for (const auto& dir : emptyDirs) {
+ std::sort(dirs.begin(), dirs.end(), [](const QString& a, const QString& b) {
+ return a.length() > b.length();
+ });
+ for (const auto& dir : dirs) {
QDir(dir).rmdir("."); // Only removes if empty.
}
}