diff --git a/src/configwidgets/selectimagebutton.cpp b/src/configwidgets/selectimagebutton.cpp --- a/src/configwidgets/selectimagebutton.cpp +++ b/src/configwidgets/selectimagebutton.cpp @@ -25,6 +25,7 @@ #include #include +#include #include #include @@ -73,13 +74,23 @@ void SelectImageButton::onLoadImageFromFile() { - QUrl fileUrl = QFileDialog::getOpenFileUrl(this, i18nc("@title:window", "Select Image"), QUrl(), QStringLiteral("image/*"), nullptr, nullptr, QStringList() << QStringLiteral("file")); + QPointer dialog = new QFileDialog(this, i18nc("@title:window", "Select Image")); + dialog->setAcceptMode(QFileDialog::AcceptOpen); + dialog->setFileMode(QFileDialog::ExistingFile); + + const QList supportedMimeTypes = QImageReader::supportedMimeTypes(); + QStringList mimeTypeFilter; + mimeTypeFilter.reserve(supportedMimeTypes.count()); + for(const QByteArray &b: supportedMimeTypes) { + mimeTypeFilter.append(QString::fromLatin1(b)); + } + dialog->setMimeTypeFilters(mimeTypeFilter); - if (!fileUrl.isEmpty()) { - setImagePath(fileUrl.path()); - } else { - return; + int rc = dialog->exec(); + if (rc == QDialog::Accepted && dialog->selectedFiles().count() > 0) { + setImagePath(dialog->selectedFiles().first()); } + delete dialog; } void SelectImageButton::onClearImage()