summaryrefslogtreecommitdiffstats
path: root/src/widgets/itemviews/qfileiconprovider.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-06-12 15:31:53 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2017-07-03 12:44:00 +0000
commitf2df5c64bde5a3837048347b18c246e674de5caa (patch)
tree5f18d27e55a2e1c6e2c7eb7f4bc7e7d07974a477 /src/widgets/itemviews/qfileiconprovider.cpp
parent00b8050d68c337f02713d3c353ded9de094eda79 (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.cpp8
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()) {