summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp4
-rw-r--r--src/widgets/dialogs/qfiledialog_p.h2
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp29
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp37
4 files changed, 49 insertions, 23 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index 9e5548ab4c..8590467abc 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -906,7 +906,7 @@ void QFileDialog::setDirectory(const QString &directory)
return;
QUrl newDirUrl = QUrl::fromLocalFile(newDirectory);
- d->setLastVisitedDirectory(newDirUrl);
+ QFileDialogPrivate::setLastVisitedDirectory(newDirUrl);
d->options->setInitialDirectory(QUrl::fromLocalFile(directory));
if (!d->usingWidgets()) {
@@ -967,7 +967,7 @@ void QFileDialog::setDirectoryUrl(const QUrl &directory)
if (!directory.isValid())
return;
- d->setLastVisitedDirectory(directory);
+ QFileDialogPrivate::setLastVisitedDirectory(directory);
d->options->setInitialDirectory(directory);
if (d->nativeDialogInUse)
diff --git a/src/widgets/dialogs/qfiledialog_p.h b/src/widgets/dialogs/qfiledialog_p.h
index 8a10896966..f610e46f83 100644
--- a/src/widgets/dialogs/qfiledialog_p.h
+++ b/src/widgets/dialogs/qfiledialog_p.h
@@ -187,7 +187,7 @@ public:
#endif
bool restoreWidgetState(QStringList &history, int splitterPosition);
- void setLastVisitedDirectory(const QUrl &dir);
+ static void setLastVisitedDirectory(const QUrl &dir);
void retranslateWindowTitle();
void retranslateStrings();
void emitFilesSelected(const QStringList &files);
diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
index e677891ce5..ffc000a418 100644
--- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
@@ -54,10 +54,10 @@
#include <qsortfilterproxymodel.h>
#include <qlineedit.h>
#include <qlayout.h>
+#include <private/qfiledialog_p.h>
#if defined QT_BUILD_INTERNAL
#include <private/qsidebar_p.h>
#include <private/qfilesystemmodel_p.h>
-#include <private/qfiledialog_p.h>
#endif
#include <private/qguiapplication_p.h>
#include <qpa/qplatformtheme.h>
@@ -108,6 +108,7 @@ public:
public slots:
void initTestCase();
void init();
+ void cleanup();
private slots:
void currentChangedSignal();
@@ -166,7 +167,7 @@ private slots:
void rejectModalDialogs();
private:
- QByteArray userSettings;
+ void cleanupSettingsFile();
};
tst_QFiledialog::tst_QFiledialog()
@@ -177,18 +178,27 @@ tst_QFiledialog::~tst_QFiledialog()
{
}
+void tst_QFiledialog::cleanupSettingsFile()
+{
+ // clean up the sidebar between each test
+ QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
+ settings.beginGroup(QLatin1String("FileDialog"));
+ settings.remove(QString());
+ settings.endGroup();
+ settings.beginGroup(QLatin1String("Qt")); // Compatibility settings
+ settings.remove(QLatin1String("filedialog"));
+ settings.endGroup();
+}
+
void tst_QFiledialog::initTestCase()
{
QStandardPaths::setTestModeEnabled(true);
+ cleanupSettingsFile();
}
void tst_QFiledialog::init()
{
- // clean up the sidebar between each test
- QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
- settings.beginGroup(QLatin1String("Qt"));
- settings.remove(QLatin1String("filedialog"));
-
+ QFileDialogPrivate::setLastVisitedDirectory(QUrl());
// populate the sidebar with some default settings
QNonNativeFileDialog fd;
#if defined(Q_OS_WINCE)
@@ -196,6 +206,11 @@ void tst_QFiledialog::init()
#endif
}
+void tst_QFiledialog::cleanup()
+{
+ cleanupSettingsFile();
+}
+
class MyAbstractItemDelegate : public QAbstractItemDelegate
{
public:
diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
index 7af62cb2a1..ed34c67aad 100644
--- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
@@ -88,6 +88,7 @@ public:
virtual ~tst_QFileDialog2();
public slots:
+ void initTestCase();
void init();
void cleanup();
@@ -135,13 +136,13 @@ private slots:
void dontShowCompleterOnRoot();
private:
- QByteArray userSettings;
+ void cleanupSettingsFile();
+
QTemporaryDir tempDir;
};
tst_QFileDialog2::tst_QFileDialog2()
- : userSettings()
- , tempDir(QDir::tempPath() + "/tst_qfiledialog2.XXXXXX")
+ : tempDir(QDir::tempPath() + "/tst_qfiledialog2.XXXXXX")
{
#if defined(Q_OS_WINCE)
qApp->setAutoMaximizeThreshold(-1);
@@ -152,17 +153,29 @@ tst_QFileDialog2::~tst_QFileDialog2()
{
}
-void tst_QFileDialog2::init()
+void tst_QFileDialog2::cleanupSettingsFile()
{
- QVERIFY(tempDir.isValid());
-
- // Save the developers settings so they don't get mad when their sidebar folders are gone.
+ // clean up the sidebar between each test
QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
- settings.beginGroup(QLatin1String("Qt"));
- userSettings = settings.value(QLatin1String("filedialog")).toByteArray();
+ settings.beginGroup(QLatin1String("FileDialog"));
+ settings.remove(QString());
+ settings.endGroup();
+ settings.beginGroup(QLatin1String("Qt")); // Compatibility settings
settings.remove(QLatin1String("filedialog"));
+ settings.endGroup();
+}
+
+void tst_QFileDialog2::initTestCase()
+{
+ QVERIFY(tempDir.isValid());
+ QStandardPaths::setTestModeEnabled(true);
+ cleanupSettingsFile();
+}
- // populate it with some default settings
+void tst_QFileDialog2::init()
+{
+ QFileDialogPrivate::setLastVisitedDirectory(QUrl());
+ // populate the sidebar with some default settings
QNonNativeFileDialog fd;
#if defined(Q_OS_WINCE)
QTest::qWait(1000);
@@ -171,9 +184,7 @@ void tst_QFileDialog2::init()
void tst_QFileDialog2::cleanup()
{
- QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
- settings.beginGroup(QLatin1String("Qt"));
- settings.setValue(QLatin1String("filedialog"), userSettings);
+ cleanupSettingsFile();
}
#ifdef QT_BUILD_INTERNAL