diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2013-02-14 16:58:52 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-15 17:48:36 +0100 |
commit | 34c240289a8682b60d5a61670e1d330d630e1f93 (patch) | |
tree | 62ac396d352e4e34f9747bff4c7aba1fc5ea62d2 | |
parent | 284958c2221cabc9b5cbc9cacb2fc848204c9369 (diff) |
Track last visited directory for native file dialogs as well.
Task-number: QTBUG-28855
Change-Id: Ia7af8540d2a453dfeabd700f44c282c48a239834
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 7 | ||||
-rw-r--r-- | src/widgets/dialogs/qfiledialog.h | 1 | ||||
-rw-r--r-- | src/widgets/dialogs/qfiledialog_p.h | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 4023981353..240e9979d8 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -536,6 +536,7 @@ void QFileDialogPrivate::initHelper(QPlatformDialogHelper *h) QObject::connect(h, SIGNAL(filesSelected(QStringList)), d, SIGNAL(filesSelected(QStringList))); QObject::connect(h, SIGNAL(currentChanged(QString)), d, SIGNAL(currentChanged(QString))); QObject::connect(h, SIGNAL(directoryEntered(QString)), d, SIGNAL(directoryEntered(QString))); + QObject::connect(h, SIGNAL(directoryEntered(QString)), d, SLOT(_q_nativeEnterDirectory(QString))); QObject::connect(h, SIGNAL(filterSelected(QString)), d, SIGNAL(filterSelected(QString))); static_cast<QPlatformFileDialogHelper *>(h)->setOptions(options); } @@ -3112,6 +3113,12 @@ void QFileDialogPrivate::_q_fileRenamed(const QString &path, const QString oldNa } } +void QFileDialogPrivate::_q_nativeEnterDirectory(const QString &directory) +{ + if (!directory.isEmpty()) // Windows native dialogs occasionally emit signals with empty strings. + *lastVisitedDir() = directory; +} + /*! \internal diff --git a/src/widgets/dialogs/qfiledialog.h b/src/widgets/dialogs/qfiledialog.h index 84bb0fa98c..18aaa781fd 100644 --- a/src/widgets/dialogs/qfiledialog.h +++ b/src/widgets/dialogs/qfiledialog.h @@ -242,6 +242,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_updateOkButton()) Q_PRIVATE_SLOT(d_func(), void _q_currentChanged(const QModelIndex &index)) Q_PRIVATE_SLOT(d_func(), void _q_enterDirectory(const QModelIndex &index)) + Q_PRIVATE_SLOT(d_func(), void _q_nativeEnterDirectory(const QString&)) Q_PRIVATE_SLOT(d_func(), void _q_goToDirectory(const QString &path)) Q_PRIVATE_SLOT(d_func(), void _q_useNameFilter(int index)) Q_PRIVATE_SLOT(d_func(), void _q_selectionChanged()) diff --git a/src/widgets/dialogs/qfiledialog_p.h b/src/widgets/dialogs/qfiledialog_p.h index 304eada093..ffaa2bc6f8 100644 --- a/src/widgets/dialogs/qfiledialog_p.h +++ b/src/widgets/dialogs/qfiledialog_p.h @@ -204,6 +204,7 @@ public: void _q_updateOkButton(); void _q_currentChanged(const QModelIndex &index); void _q_enterDirectory(const QModelIndex &index); + void _q_nativeEnterDirectory(const QString &directory); void _q_goToDirectory(const QString &); void _q_useNameFilter(int index); void _q_selectionChanged(); |