diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp index 846d732b817b228ce21ba3c0a470dc811f5c2eb6..913e21d7ddbf840d0aef1fe9778336f5fccee1c0 100644 --- a/src/plugins/projectexplorer/projectwizardpage.cpp +++ b/src/plugins/projectexplorer/projectwizardpage.cpp @@ -135,6 +135,18 @@ void ProjectWizardPage::changeEvent(QEvent *e) } } +// Alphabetically, and files in sub-directories first +static bool generatedFilePathLessThan(const QString &filePath1, const QString &filePath2) +{ + const bool filePath1HasDir = filePath1.contains(QLatin1Char('/')); + const bool filePath2HasDir = filePath2.contains(QLatin1Char('/')); + + if (filePath1HasDir == filePath2HasDir) + return filePath1 < filePath2; + else + return filePath1HasDir; +} + void ProjectWizardPage::setFilesDisplay(const QString &commonPath, const QStringList &files) { QString fileMessage; @@ -143,15 +155,21 @@ void ProjectWizardPage::setFilesDisplay(const QString &commonPath, const QString str << "<qt>" << (commonPath.isEmpty() ? tr("Files to be added:") : tr("Files to be added in")) << "<pre>"; + + QStringList formattedFiles; if (commonPath.isEmpty()) { - foreach(const QString &f, files) - str << QDir::toNativeSeparators(f) << '\n'; + formattedFiles = files; } else { str << QDir::toNativeSeparators(commonPath) << ":\n\n"; const int prefixSize = commonPath.size() + 1; - foreach(const QString &f, files) - str << QDir::toNativeSeparators(f.right(f.size() - prefixSize)) << '\n'; + foreach (const QString &f, files) + formattedFiles.append(f.right(f.size() - prefixSize)); } + qSort(formattedFiles.begin(), formattedFiles.end(), generatedFilePathLessThan); + + foreach (const QString &f, formattedFiles) + str << QDir::toNativeSeparators(f) << '\n'; + str << "</pre>"; } m_ui->filesLabel->setText(fileMessage);