From 5a1861399b1b8af97cdc1b4991b04a4bee69d5c8 Mon Sep 17 00:00:00 2001 From: David Faure Date: Sat, 28 Jul 2018 14:21:50 +0200 Subject: QFileDialog: make QFileDialog::selectFile resolve remote dirs correctly The code was assuming local files, and broke with remote dirs. Testcase: `kwrite sftp://localhost/tmp/file.txt` and then Ctrl+O, the initial directory was $PWD instead of the remote dir. Change-Id: Ie24d4c1b2b3278dce44274af0066105bd1bf9b34 Reviewed-by: Friedemann Kleint Reviewed-by: Christian Ehrlicher Reviewed-by: Luca Beldi Reviewed-by: Edward Welbourne --- src/widgets/dialogs/qfiledialog.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/widgets/dialogs/qfiledialog.cpp') diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 2742b152f2..9116bf61fe 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -1047,10 +1047,15 @@ void QFileDialog::selectFile(const QString &filename) return; if (!d->usingWidgets()) { - QUrl url = QUrl::fromLocalFile(filename); + QUrl url; if (QFileInfo(filename).isRelative()) { - QDir dir(d->options->initialDirectory().toLocalFile()); - url = QUrl::fromLocalFile(dir.absoluteFilePath(filename)); + url = d->options->initialDirectory(); + QString path = url.path(); + if (!path.endsWith(QLatin1Char('/'))) + path += QLatin1Char('/'); + url.setPath(path + filename); + } else { + url = QUrl::fromLocalFile(filename); } d->selectFile_sys(url); d->options->setInitiallySelectedFiles(QList() << url); -- cgit v1.2.3