diff --git a/autotests/kfiledialog_unittest.cpp b/autotests/kfiledialog_unittest.cpp --- a/autotests/kfiledialog_unittest.cpp +++ b/autotests/kfiledialog_unittest.cpp @@ -104,11 +104,11 @@ QFETCH(QStringList, mimeTypeFilters); dialog.setMimeTypeFilters(mimeTypeFilters); - dialog.show(); QFETCH(QString, targetMimeTypeFilter); dialog.selectMimeTypeFilter(targetMimeTypeFilter); + dialog.show(); QCOMPARE(dialog.selectedMimeTypeFilter(), targetMimeTypeFilter); } diff --git a/src/platformtheme/kdeplatformfiledialoghelper.cpp b/src/platformtheme/kdeplatformfiledialoghelper.cpp --- a/src/platformtheme/kdeplatformfiledialoghelper.cpp +++ b/src/platformtheme/kdeplatformfiledialoghelper.cpp @@ -315,9 +315,17 @@ dialog->m_fileWidget->setFilter(qt2KdeFilter(nameFilters)); } +#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) + if (!options()->initiallySelectedMimeTypeFilter().isEmpty()) { + selectMimeTypeFilter(options()->initiallySelectedMimeTypeFilter()); + } else if (!options()->initiallySelectedNameFilter().isEmpty()) { + selectNameFilter(options()->initiallySelectedNameFilter()); + } +#else if (!options()->initiallySelectedNameFilter().isEmpty()) { selectNameFilter(options()->initiallySelectedNameFilter()); } +#endif // overwrite option if (options()->testOption(QFileDialogOptions::FileDialogOption::DontConfirmOverwrite)) { diff --git a/tests/qfiledialogtest.cpp b/tests/qfiledialogtest.cpp --- a/tests/qfiledialogtest.cpp +++ b/tests/qfiledialogtest.cpp @@ -37,6 +37,7 @@ parser.addOption(QCommandLineOption(QStringList(QStringLiteral("nameFilter")), QStringLiteral("Dialog nameFilter, e. g. 'cppfiles (*.cpp *.h *.hpp)', can be specified multiple times"), QStringLiteral("nameFilter"), QStringLiteral("Everything (*)"))); parser.addOption(QCommandLineOption(QStringList(QStringLiteral("mimeTypeFilter")), QStringLiteral("Dialog mimeTypeFilter, e. g. 'application/json', can be specified multiple times"), QStringLiteral("mimeTypeFilter"))); parser.addOption(QCommandLineOption(QStringList(QStringLiteral("selectNameFilter")), QStringLiteral("Initially selected nameFilter"), QStringLiteral("selectNameFilter"))); + parser.addOption(QCommandLineOption(QStringList(QStringLiteral("selectMimeTypeFilter")), QStringLiteral("Initially selected mimeTypeFilter"), QStringLiteral("selectMimeTypeFilter"))); parser.addOption(QCommandLineOption(QStringList(QStringLiteral("selectFile")), QStringLiteral("Initially selected file"), QStringLiteral("filename"))); parser.addOption(QCommandLineOption(QStringList(QStringLiteral("selectDirectory")), QStringLiteral("Initially selected directory"), QStringLiteral("dirname"))); parser.addOption(QCommandLineOption(QStringList(QStringLiteral("modal")), QStringLiteral("Test modal dialog"), QStringLiteral("modality"), QStringLiteral("on"))); @@ -86,8 +87,11 @@ } QString selectNameFilter = parser.value(QStringLiteral("selectNameFilter")); + QString selectMimeTypeFilter = parser.value(QStringLiteral("selectMimeTypeFilter")); if (!selectNameFilter.isEmpty()) { dialog.selectNameFilter(selectNameFilter); + } else if (!selectMimeTypeFilter.isEmpty()) { + dialog.selectMimeTypeFilter(selectMimeTypeFilter); } if (parser.value(QStringLiteral("confirmOverwrite")) == QStringLiteral("off")) {