diff --git a/src/widgets/fileviewlist.cpp b/src/widgets/fileviewlist.cpp index 3e691f4d0..171b70a7f 100644 --- a/src/widgets/fileviewlist.cpp +++ b/src/widgets/fileviewlist.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include "core/iconloader.h" @@ -68,14 +69,22 @@ void FileViewList::contextMenuEvent(QContextMenuEvent *e) { QList FileViewList::UrlListFromSelection() const { - QList urls; + QStringList filenames; const QModelIndexList indexes = menu_selection_.indexes(); for (const QModelIndex &index : indexes) { if (index.column() == 0) { - urls << QUrl::fromLocalFile(qobject_cast(model())->fileInfo(index).canonicalFilePath()); + filenames << qobject_cast(model())->fileInfo(index).canonicalFilePath(); } } - std::sort(urls.begin(), urls.end()); + + QCollator collator; + collator.setNumericMode(true); + std::sort(filenames.begin(), filenames.end(), collator); + + QList urls; + for (const QString &filename : filenames) { + urls << QUrl::fromLocalFile(filename); + } return urls; @@ -127,6 +136,11 @@ QStringList FileViewList::FilenamesFromSelection() const { filenames << qobject_cast(model())->filePath(index); } } + + QCollator collator; + collator.setNumericMode(true); + std::sort(filenames.begin(), filenames.end(), collator); + return filenames; }