summaryrefslogtreecommitdiffstats
path: root/src/dialogs/qquickabstractfiledialog.cpp
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@digia.com>2014-01-20 16:11:03 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-11 13:30:10 +0100
commitca06c78059918570fc46b8df915b0d7bcd0c80b2 (patch)
tree2f5bcf8da26c8a273d309ee02ba364011a232a68 /src/dialogs/qquickabstractfiledialog.cpp
parent77a6b6448200c263a862bc34546106a6b0e698a6 (diff)
FileDialog: centralize URL validation in setFolder
QQuickAbstractFileDialog::setFolder() takes care of the pathological cases so that the QML can be more straightforward. This is an alternate fix for QTBUG-36006 and some other navigation bugs. Change-Id: I7b6b6c8cb31d68e3971e39842ec63118854ecd6d Reviewed-by: Liang Qi <liang.qi@digia.com>
Diffstat (limited to 'src/dialogs/qquickabstractfiledialog.cpp')
-rw-r--r--src/dialogs/qquickabstractfiledialog.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/dialogs/qquickabstractfiledialog.cpp b/src/dialogs/qquickabstractfiledialog.cpp
index e193ca37a..4b8592d42 100644
--- a/src/dialogs/qquickabstractfiledialog.cpp
+++ b/src/dialogs/qquickabstractfiledialog.cpp
@@ -116,9 +116,15 @@ QUrl QQuickAbstractFileDialog::folder() const
void QQuickAbstractFileDialog::setFolder(const QUrl &f)
{
+ QString lf = f.toLocalFile();
+ while (lf.startsWith("//"))
+ lf.remove(0, 1);
+ if (lf.isEmpty())
+ lf = QDir::currentPath();
+ QUrl u = QUrl::fromLocalFile(lf);
if (m_dlgHelper)
- m_dlgHelper->setDirectory(f);
- m_options->setInitialDirectory(f);
+ m_dlgHelper->setDirectory(u);
+ m_options->setInitialDirectory(u);
emit folderChanged();
}