diff -ur qtbase-everywhere-src-6.7.1-orig/src/gui/itemmodels/qfilesystemmodel.cpp qtbase-everywhere-src-6.7.1-changed/src/gui/itemmodels/qfilesystemmodel.cpp --- qtbase-everywhere-src-6.7.1-orig/src/gui/itemmodels/qfilesystemmodel.cpp 2024-05-08 12:42:08.000000000 +0300 +++ qtbase-everywhere-src-6.7.1-changed/src/gui/itemmodels/qfilesystemmodel.cpp 2024-06-09 18:19:46.314994400 +0300 @@ -1024,9 +1024,18 @@ switch (sortColumn) { case QFileSystemModelPrivate::NameColumn: { #ifndef Q_OS_MAC - // place directories before files - bool left = l->isDir(); - bool right = r->isDir(); + // . and .. go first + bool left = l->fileName == "."_L1; + bool right = r->fileName == "."_L1; + if (left ^ right) + return left; + left = l->fileName == ".."_L1; + right = r->fileName == ".."_L1; + if (left ^ right) + return left; + // Direcrories go second + left = l->isDir(); + right = r->isDir(); if (left ^ right) return left; #endif @@ -1034,9 +1043,18 @@ } case QFileSystemModelPrivate::SizeColumn: { - // Directories go first - bool left = l->isDir(); - bool right = r->isDir(); + // . and .. go first + bool left = l->fileName == "."_L1; + bool right = r->fileName == "."_L1; + if (left ^ right) + return left; + left = l->fileName == ".."_L1; + right = r->fileName == ".."_L1; + if (left ^ right) + return left; + // Direcrories go second + left = l->isDir(); + right = r->isDir(); if (left ^ right) return left;