[kdelibs] followup upstream mimetypes fix

Rex Dieter rdieter at fedoraproject.org
Sat Oct 19 12:26:24 UTC 2013


commit 9625fd188099e32877fd65715de8e2239f2953b1
Author: Rex Dieter <rdieter at math.unl.edu>
Date:   Sat Oct 19 07:26:21 2013 -0500

    followup upstream mimetypes fix

 ...-for-association-with-derived-mimetypes-f.patch |   84 ++++++++++++++++++++
 kdelibs.spec                                       |    7 ++-
 2 files changed, 90 insertions(+), 1 deletions(-)
---
diff --git a/0015-Improve-fix-for-association-with-derived-mimetypes-f.patch b/0015-Improve-fix-for-association-with-derived-mimetypes-f.patch
new file mode 100644
index 0000000..873b9e5
--- /dev/null
+++ b/0015-Improve-fix-for-association-with-derived-mimetypes-f.patch
@@ -0,0 +1,84 @@
+From 8bfcace7efc0feea8899f70dfc15c3050c90ea99 Mon Sep 17 00:00:00 2001
+From: David Faure <faure at kde.org>
+Date: Sat, 19 Oct 2013 10:15:35 +0200
+Subject: [PATCH 15/15] Improve fix for association with derived mimetypes
+ (f723e2e7d36)
+
+If a desktop file was mentionning two aliases, they would both get
+removed, due to is() returning true for aliases as well.
+
+CCBUG: 321706
+---
+ kded/kbuildservicefactory.cpp        |  7 ++++++-
+ kded/tests/kmimeassociationstest.cpp | 14 ++++++++++----
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+diff --git a/kded/kbuildservicefactory.cpp b/kded/kbuildservicefactory.cpp
+index b4564bd..7a2a2fc 100644
+--- a/kded/kbuildservicefactory.cpp
++++ b/kded/kbuildservicefactory.cpp
+@@ -269,8 +269,13 @@ void KBuildServiceFactory::populateServiceTypes()
+                 } else {
+                     bool shouldAdd = true;
+                     foreach (const QString &otherType, service->serviceTypes()) {
++                        // Skip derived types if the base class is listed (#321706)
+                         if (stName != otherType && mime->is(otherType)) {
+-                            shouldAdd = false;
++                            // But don't skip aliases (they got resolved into mime->name() already, but don't let two aliases cancel out)
++                            if (KMimeTypeRepository::self()->canonicalName(otherType) != mime->name()) {
++                                //kDebug() << "Skipping" << mime->name() << "because of" << otherType << "(canonical" << KMimeTypeRepository::self()->canonicalName(otherType) << ") while parsing" << service->entryPath();
++                                shouldAdd = false;
++                            }
+                         }
+                     }
+                     if (shouldAdd) {
+diff --git a/kded/tests/kmimeassociationstest.cpp b/kded/tests/kmimeassociationstest.cpp
+index a07637f..342a8fd 100644
+--- a/kded/tests/kmimeassociationstest.cpp
++++ b/kded/tests/kmimeassociationstest.cpp
+@@ -140,10 +140,12 @@ private Q_SLOTS:
+         // This interacted badly with mimeapps.list listing another app for text/plain, but the
+         // lookup found this app first, due to c-src. The fix: ignoring derived mimetypes when
+         // the base mimetype is already listed.
++        //
++        // Also include aliases (msword), to check they don't cancel each other out.
+         fakeCSrcApplication = m_localApps + "fakecsrcapplication.desktop";
+         if (!QFile::exists(fakeCSrcApplication)) {
+             mustUpdateKSycoca = true;
+-            writeAppDesktopFile(fakeCSrcApplication, QStringList() << "text/plain" << "text/c-src", 8);
++            writeAppDesktopFile(fakeCSrcApplication, QStringList() << "text/plain" << "text/c-src" << "application/vnd.ms-word" << "application/msword", 8);
+         }
+ 
+         fakeJpegApplication = m_localApps + "fakejpegapplication.desktop";
+@@ -200,6 +202,7 @@ private Q_SLOTS:
+         preferredApps["text/plain"] << "faketextapplication.desktop" << "kde4-kwrite.desktop";
+         preferredApps["text/x-csrc"] << "faketextapplication.desktop" << "kde4-kwrite.desktop";
+         preferredApps["text/html"] << "fakehtmlapplication.desktop";
++        preferredApps["application/msword"] << "fakecsrcapplication.desktop";
+         removedApps["image/jpeg"] << "firefox.desktop";
+         removedApps["text/html"] << "kde4-dolphin.desktop" << "kde4-kwrite.desktop";
+ 
+@@ -231,14 +234,17 @@ private Q_SLOTS:
+         for (ExpectedResultsMap::const_iterator it = preferredApps.constBegin(),
+                                                end = preferredApps.constEnd() ; it != end ; ++it) {
+             const QString mime = it.key();
+-            // Derived mimetypes are handled outside KMimeAssociations
+-            if (mime == QLatin1String("text/x-csrc"))
++            // The data for derived types and aliases isn't for this test (which only looks at mimeapps.list)
++            if (mime == QLatin1String("text/x-csrc") || mime == QLatin1String("application/msword"))
+                 continue;
+             const QList<KServiceOffer> offers = offerHash.offersFor(mime);
+             Q_FOREACH(const QString& service, it.value()) {
+                 KService::Ptr serv = KService::serviceByStorageId(service);
+                 if (serv && !offersContains(offers, serv)) {
+-                    kDebug() << serv.data() << serv->entryPath() << "does not have" << mime;
++                    kDebug() << "expected offer" << serv->entryPath() << "not in offers for" << mime << ":";
++                    Q_FOREACH(const KServiceOffer& offer, offers) {
++                        kDebug() << offer.service()->storageId();
++                    }
+                     QFAIL("offer does not have servicetype");
+                 }
+             }
+-- 
+1.8.3.1
+
diff --git a/kdelibs.spec b/kdelibs.spec
index 027de02..55b5857 100644
--- a/kdelibs.spec
+++ b/kdelibs.spec
@@ -38,7 +38,7 @@ Source10: SOLID_HAL_LEGACY.sh
 
 Summary: KDE Libraries
 Version: 4.11.2
-Release: 2%{?dist}
+Release: 3%{?dist}
 
 Name: kdelibs
 Epoch: 6
@@ -167,6 +167,7 @@ Patch093: turn-the-packagekit-support-feature-off-by-default.patch
 Patch102: 0002-Improve-error-handling-when-writing-to-the-kdeinit4-.patch
 Patch110: 0010-Enable-translation-functions-for-js-QScriptEngine-sc.patch
 Patch112: 0012-Fix-association-with-derived-mimetype-again.patch
+Patch115: 0015-Improve-fix-for-association-with-derived-mimetypes-f.patch
 
 ## security fix
 
@@ -363,6 +364,7 @@ sed -i -e "s|@@VERSION_RELEASE@@|%{version}-%{release}|" kio/kio/kprotocolmanage
 %patch102 -p1 -b .0002
 %patch110 -p1 -b .0010
 %patch112 -p1 -b .0012
+%patch115 -p1 -b .0015
 
 # security fixes
 
@@ -612,6 +614,9 @@ gtk-update-icon-cache %{_kde4_iconsdir}/hicolor &> /dev/null || :
 
 
 %changelog
+* Sat Oct 19 2013 Rex Dieter <rdieter at fedoraproject.org> - 6:4.11.2-3
+- followup upstream mimetypes fix
+
 * Fri Oct 18 2013 Rex Dieter <rdieter at fedoraproject.org> - 6:4.11.2-2
 - backport a few upstream fixes
 


More information about the scm-commits mailing list