From cf6ebce42ba34838278ebbc75ae5f8c9e12df8e5 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 5 Jan 2021 09:02:12 +0100 Subject: [PATCH] QXdgDesktopFileDialog: backport upstream fixes --- ...platform-qxdgdesktopfiledialog-fixes.patch | 63 +++++++++++++++++++ qgnomeplatform.spec | 6 +- 2 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 qgnomeplatform-qxdgdesktopfiledialog-fixes.patch diff --git a/qgnomeplatform-qxdgdesktopfiledialog-fixes.patch b/qgnomeplatform-qxdgdesktopfiledialog-fixes.patch new file mode 100644 index 0000000..db43a69 --- /dev/null +++ b/qgnomeplatform-qxdgdesktopfiledialog-fixes.patch @@ -0,0 +1,63 @@ +From e244e003b68f660dbb0795d18ad70e8a11689712 Mon Sep 17 00:00:00 2001 +From: Jan Grulich +Date: Mon, 4 Jan 2021 11:43:36 +0100 +Subject: QXdgDesktopPortalFileDialog: backport upstream fixes + + +diff --git a/common/qxdgdesktopportalfiledialog.cpp b/common/qxdgdesktopportalfiledialog.cpp +index 7502a6e..c4dc2da 100644 +--- a/common/qxdgdesktopportalfiledialog.cpp ++++ b/common/qxdgdesktopportalfiledialog.cpp +@@ -210,7 +210,7 @@ void QXdgDesktopPortalFileDialog::openPortal() + qDBusRegisterMetaType(); + + FilterList filterList; +- Filter* selectedFilter = nullptr; ++ auto selectedFilterIndex = filterList.size() - 1; + + d->userVisibleToNameFilter.clear(); + +@@ -236,7 +236,7 @@ void QXdgDesktopPortalFileDialog::openPortal() + filterList << filter; + + if (!d->selectedMimeTypeFilter.isEmpty() && d->selectedMimeTypeFilter == mimeTypefilter) +- selectedFilter = &filterList.last(); ++ selectedFilterIndex = filterList.size() - 1; + } + } else if (!d->nameFilters.isEmpty()) { + for (const QString &nameFilter : d->nameFilters) { +@@ -246,7 +246,12 @@ void QXdgDesktopPortalFileDialog::openPortal() + QRegularExpressionMatch match = regexp.match(nameFilter); + if (match.hasMatch()) { + QString userVisibleName = match.captured(1); +- QStringList filterStrings = match.captured(2).split(QLatin1Char(' '), QString::SkipEmptyParts); ++ QStringList filterStrings = match.captured(2).split(QLatin1Char(' '), Qt::SkipEmptyParts); ++ ++ if (filterStrings.isEmpty()) { ++ qWarning() << "Filter " << userVisibleName << " is empty and will be ignored."; ++ continue; ++ } + + FilterConditionList filterConditions; + for (const QString &filterString : filterStrings) { +@@ -265,7 +270,7 @@ void QXdgDesktopPortalFileDialog::openPortal() + d->userVisibleToNameFilter.insert(userVisibleName, nameFilter); + + if (!d->selectedNameFilter.isEmpty() && d->selectedNameFilter == nameFilter) +- selectedFilter = &filterList.last(); ++ selectedFilterIndex = filterList.size() - 1; + } + } + } +@@ -273,9 +278,8 @@ void QXdgDesktopPortalFileDialog::openPortal() + if (!filterList.isEmpty()) + options.insert(QLatin1String("filters"), QVariant::fromValue(filterList)); + +- if (selectedFilter) { +- options.insert(QLatin1String("current_filter"), QVariant::fromValue(*selectedFilter)); +- } ++ if (selectedFilterIndex != -1) ++ options.insert(QLatin1String("current_filter"), QVariant::fromValue(filterList[selectedFilterIndex])); + + options.insert(QLatin1String("handle_token"), QStringLiteral("qt%1").arg(QRandomGenerator::global()->generate())); + diff --git a/qgnomeplatform.spec b/qgnomeplatform.spec index 6383f54..604af49 100644 --- a/qgnomeplatform.spec +++ b/qgnomeplatform.spec @@ -1,7 +1,7 @@ Name: qgnomeplatform Version: 0.7.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Qt Platform Theme aimed to accommodate Gnome settings License: LGPLv2+ @@ -9,6 +9,7 @@ URL: https://github.com/MartinBriza/QGnomePlatform Source0: https://github.com/MartinBriza/QGnomePlatform/archive/%{version}/QGnomePlatform-%{version}.tar.gz # Upstream patches +Patch0: qgnomeplatform-qxdgdesktopfiledialog-fixes.patch BuildRequires: pkgconfig(gio-2.0) BuildRequires: pkgconfig(udev) @@ -55,6 +56,9 @@ make install INSTALL_ROOT=%{buildroot} -C %{_target_platform} %{_qt5_libdir}/qt5/plugins/wayland-decoration-client/libqgnomeplatformdecoration.so %changelog +* Tue Jan 05 2021 Jan Grulich - 0.7.0-2 +- QXdgDesktopFileDialog: backport upstream fixes + * Thu Dec 17 2020 Jan Grulich - 0.7.0-1 - 0.7.0