diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-12-04 12:51:12 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-12-12 07:22:29 +0000 |
commit | 589f9f179cd0f570db22f15941625d911f6b7721 (patch) | |
tree | d08cb1ec942213772f83f0790a7c1f76f91660f2 /src/widgets/dialogs/qfiledialog.cpp | |
parent | f10b98084064f5d53717c8364048562d373a7f88 (diff) |
QFileDialog: Remember last visited directory correctly
QFileDialogPrivate::init() sets the working directory derived
from the URL passed in, causing the lastVisitedDir to be set.
This in turn prevented the restoreState() logic from setting
the directory retrieved from the file. Clear lastVisitedDir
in init() in case the initial URL was invalid.
Fixes: QTBUG-70798
Change-Id: I19084e24eb6d469330c4dd8c50495b4996279189
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'src/widgets/dialogs/qfiledialog.cpp')
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 69496dbd29..eb3479b3e0 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -2866,7 +2866,11 @@ void QFileDialogPrivate::init(const QUrl &directory, const QString &nameFilter, q->setFileMode(QFileDialog::AnyFile); if (!nameFilter.isEmpty()) q->setNameFilter(nameFilter); + // QTBUG-70798, prevent the default blocking the restore logic. + const bool dontStoreDir = !directory.isValid() && !lastVisitedDir()->isValid(); q->setDirectoryUrl(workingDirectory(directory)); + if (dontStoreDir) + lastVisitedDir()->clear(); if (directory.isLocalFile()) q->selectFile(initialSelection(directory)); else |