diff --git a/src/dfm-io/dfm-io/denumerator.cpp b/src/dfm-io/dfm-io/denumerator.cpp index 6cbe4fa4..cfb96072 100644 --- a/src/dfm-io/dfm-io/denumerator.cpp +++ b/src/dfm-io/dfm-io/denumerator.cpp @@ -89,8 +89,7 @@ void DEnumeratorPrivate::clean() bool DEnumeratorPrivate::createEnumerator(const QUrl &url, QPointer me) { - const QString &uriPath = url.toString(); - g_autoptr(GFile) gfile = g_file_new_for_uri(uriPath.toLocal8Bit().data()); + g_autoptr(GFile) gfile = DLocalHelper::createGFile(url); g_autoptr(GError) gerror = nullptr; checkAndResetCancel(); @@ -116,7 +115,7 @@ bool DEnumeratorPrivate::createEnumerator(const QUrl &url, QPointermessage; + qWarning() << "create enumerator failed, url: " << url << " error: " << error.errorMsg() << gerror->message; } else { stackEnumerator.push_back(genumerator); } diff --git a/src/dfm-io/dfm-io/utils/dlocalhelper.cpp b/src/dfm-io/dfm-io/utils/dlocalhelper.cpp index 5cf0fd32..0898e571 100644 --- a/src/dfm-io/dfm-io/utils/dlocalhelper.cpp +++ b/src/dfm-io/dfm-io/utils/dlocalhelper.cpp @@ -1093,8 +1093,11 @@ GFile *DLocalHelper::createGFile(const QUrl &uri) QString path = uri.userInfo().isEmpty() || !uri.userInfo().startsWith("originPath::") ? QString() : uri.userInfo().replace("originPath::", ""); + QString uriStr = uri.toString(); + uriStr.replace("%5C", "\\"); + GFile *gfile = path.isEmpty() ? - g_file_new_for_uri(uri.toString().toLocal8Bit().data()) : + g_file_new_for_uri(uriStr.toLocal8Bit().data()) : g_file_new_for_path(path.toLatin1().data()); return gfile; }