diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-06-12 15:31:53 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2017-07-03 12:44:00 +0000 |
commit | f2df5c64bde5a3837048347b18c246e674de5caa (patch) | |
tree | 5f18d27e55a2e1c6e2c7eb7f4bc7e7d07974a477 /src/widgets/itemviews/qfileiconprovider.cpp | |
parent | 00b8050d68c337f02713d3c353ded9de094eda79 (diff) |
QFileSystemEntry: Export static helper function checking for the root path
This provides a helper function which does the check on the string.
QFileInfo::isRoot() in addition checks for the existence of
the directory, which can cause hangs with network drives.
Use the new function in appropriate places in QtWidgets.
Task-number: QTBUG-6039
Change-Id: I54d0d860713e82b28fa4069a5345b042337f9c52
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/widgets/itemviews/qfileiconprovider.cpp')
-rw-r--r-- | src/widgets/itemviews/qfileiconprovider.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/widgets/itemviews/qfileiconprovider.cpp b/src/widgets/itemviews/qfileiconprovider.cpp index 8c3cf3859e..65ae6b9505 100644 --- a/src/widgets/itemviews/qfileiconprovider.cpp +++ b/src/widgets/itemviews/qfileiconprovider.cpp @@ -46,6 +46,7 @@ #include <private/qfunctions_p.h> #include <private/qguiapplication_p.h> #include <private/qicon_p.h> +#include <private/qfilesystementry_p.h> #include <qpa/qplatformintegration.h> #include <qpa/qplatformservices.h> #include <qpa/qplatformtheme.h> @@ -247,10 +248,11 @@ QIcon QFileIconProvider::icon(const QFileInfo &info) const if (!retIcon.isNull()) return retIcon; - if (info.isRoot()) + const QString &path = info.absoluteFilePath(); + if (path.isEmpty() || QFileSystemEntry::isRootPath(path)) #if defined (Q_OS_WIN) && !defined(Q_OS_WINRT) { - UINT type = GetDriveType((wchar_t *)info.absoluteFilePath().utf16()); + UINT type = GetDriveType(reinterpret_cast<const wchar_t *>(path.utf16())); switch (type) { case DRIVE_REMOVABLE: @@ -298,7 +300,7 @@ QIcon QFileIconProvider::icon(const QFileInfo &info) const QString QFileIconProvider::type(const QFileInfo &info) const { - if (info.isRoot()) + if (QFileSystemEntry::isRootPath(info.absoluteFilePath())) return QApplication::translate("QFileDialog", "Drive"); if (info.isFile()) { if (!info.suffix().isEmpty()) { |