summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Astals Cid <aacid@kde.org>2016-12-31 10:55:43 (GMT)
committerAlbert Astals Cid <aacid@kde.org>2016-12-31 10:55:43 (GMT)
commit87b27476cc8a3865994da066ce06a3e836462719 (patch)
tree8a68da096b0514db693c5b2f2d98d86117223044
parentf807b57ba20ac1ffb196c98d93d134a8178bc769 (diff)
Fix regression in which the Save dialog appears as an Open dialog
7bbbd93cd3fc0abdffd3fa7f144cb50a33fafad9 makes the save dialog appear as Open dialog. Simplify the code in that commit so it does not regress anymore. Comes with a unit test New test fails without the patch, works with it. Kate Save As dialog no longer shows as Open dialog. REVIEW: 129732
-rw-r--r--autotests/kfiledialog_unittest.cpp23
-rw-r--r--src/platformtheme/kdeplatformfiledialoghelper.cpp10
2 files changed, 24 insertions, 9 deletions
diff --git a/autotests/kfiledialog_unittest.cpp b/autotests/kfiledialog_unittest.cpp
index 47a5543..d53c7e3 100644
--- a/autotests/kfiledialog_unittest.cpp
+++ b/autotests/kfiledialog_unittest.cpp
@@ -95,6 +95,29 @@ private Q_SLOTS:
QCOMPARE(dialog.directoryUrl(), directoryUrl);
}
+ void testGetSaveFileUrl()
+ {
+ QObject lambdaGuard;
+ QTemporaryFile tempFile(QDir::tempPath()+"/kfiledialogtest_XXXXXX");
+ tempFile.open();
+ const QString tempName = tempFile.fileName();
+ const QUrl url = QUrl::fromLocalFile(tempName);
+
+ // Need to use a lambda and not just QTest::qWaitForWindowExposed();
+ // because with the static getSaveFileUrl we do not have access
+ // to the QFileDialog object, so instead we hook to a signal
+ KFileWidget::OperationMode saveFileOperationMode = KFileWidget::Other;
+ connect(qApp, &QGuiApplication::focusWindowChanged, &lambdaGuard, [&saveFileOperationMode] {
+ KFileWidget *fileWidget = findFileWidget();
+ saveFileOperationMode = fileWidget->operationMode();
+ qApp->activeWindow()->close();
+ });
+
+ QFileDialog::getSaveFileUrl(0, QString(), url);
+
+ QCOMPARE(saveFileOperationMode, KFileWidget::Saving);
+ }
+
void testViewMode()
{
// Open a file dialog, and change view mode to tree
diff --git a/src/platformtheme/kdeplatformfiledialoghelper.cpp b/src/platformtheme/kdeplatformfiledialoghelper.cpp
index 990b983..05cfe35 100644
--- a/src/platformtheme/kdeplatformfiledialoghelper.cpp
+++ b/src/platformtheme/kdeplatformfiledialoghelper.cpp
@@ -365,15 +365,7 @@ void KDEPlatformFileDialogHelper::selectFile(const QUrl &filename)
// Qt 5 at least <= 5.8.0 does not derive the directory from the passed url
// and set the initialDirectory option accordingly, also not for known schemes
// like file://, so we have to do it ourselves
-
- // Syntax-wise we have to use a copy ctor until Qt 5.7.x and clone() since Qt 5.8.
-#if QT_VERSION < QT_VERSION_CHECK(5, 8, 0)
- QSharedPointer<QFileDialogOptions> opt(new QFileDialogOptions(*options()));
-#else
- auto opt = options()->clone();
-#endif
- opt->setInitialDirectory(m_dialog->directory());
- setOptions(opt);
+ options()->setInitialDirectory(m_dialog->directory());
}
void KDEPlatformFileDialogHelper::setDirectory(const QUrl &directory)