From 758544c0581a70f87d375692ff93d18b3b2ecebf Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Tue, 22 Dec 2015 13:27:22 +0100 Subject: [PATCH] GenericProject: Keep file list sorted when adding or renaming files Change-Id: I064e9a00039671fbf626efa5227678800615ff1d Reviewed-by: Tobias Hunger --- .../genericprojectmanager/genericproject.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 5168462ad39..60fbcb9c2eb 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -171,14 +172,19 @@ bool GenericProject::saveRawList(const QStringList &rawList, const QString &file return result; } +static void insertSorted(QStringList *list, const QString &value) +{ + int pos = Utils::indexOf(*list, [value](const QString &s) { return s > value; }); + list->insert(pos, value); +} + bool GenericProject::addFiles(const QStringList &filePaths) { QStringList newList = m_rawFileList; QDir baseDir(projectDirectory().toString()); foreach (const QString &filePath, filePaths) - newList.append(baseDir.relativeFilePath(filePath)); - + insertSorted(&newList, baseDir.relativeFilePath(filePath)); QSet includes = projectIncludePaths().toSet(); QSet toAdd; @@ -223,6 +229,7 @@ bool GenericProject::setFiles(const QStringList &filePaths) QDir baseDir(projectDirectory().toString()); foreach (const QString &filePath, filePaths) newList.append(baseDir.relativeFilePath(filePath)); + Utils::sort(newList); return saveRawFileList(newList); } @@ -236,7 +243,8 @@ bool GenericProject::renameFile(const QString &filePath, const QString &newFileP int index = newList.indexOf(i.value()); if (index != -1) { QDir baseDir(projectDirectory().toString()); - newList.replace(index, baseDir.relativeFilePath(newFilePath)); + newList.removeAt(index); + insertSorted(&newList, baseDir.relativeFilePath(newFilePath)); } }