From 34c240289a8682b60d5a61670e1d330d630e1f93 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Thu, 14 Feb 2013 16:58:52 +0100 Subject: Track last visited directory for native file dialogs as well. Task-number: QTBUG-28855 Change-Id: Ia7af8540d2a453dfeabd700f44c282c48a239834 Reviewed-by: Oliver Wolff Reviewed-by: Joerg Bornemann --- src/widgets/dialogs/qfiledialog.cpp | 7 +++++++ src/widgets/dialogs/qfiledialog.h | 1 + src/widgets/dialogs/qfiledialog_p.h | 1 + 3 files changed, 9 insertions(+) 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(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(); -- cgit v1.2.3