summaryrefslogtreecommitdiff
path: root/libre/qtcreator/qtcreator-mime-database.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libre/qtcreator/qtcreator-mime-database.patch')
-rw-r--r--libre/qtcreator/qtcreator-mime-database.patch77
1 files changed, 77 insertions, 0 deletions
diff --git a/libre/qtcreator/qtcreator-mime-database.patch b/libre/qtcreator/qtcreator-mime-database.patch
new file mode 100644
index 000000000..65ce334f6
--- /dev/null
+++ b/libre/qtcreator/qtcreator-mime-database.patch
@@ -0,0 +1,77 @@
+From e7ef1ad0ba526dd2fc47602e4d45d62adbdbe5db Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Fri, 28 Jun 2019 22:46:20 -0700
+Subject: [PATCH] Re-fix QtCore resource path changing and prepare for Qt 5.13
+
+Commit 9cf8ab3b3d44ac50a1f8d4893d8f70b8aedb18b0 added the #ifdef, but
+that of course only works if you don't upgrade Qt compared to what Qt
+Creator was compiled with. Instead, attempt both paths and only do that
+if the system copy is not found.
+
+Searching the system copy is required to address Qt 5.13's configure
+option -no-mimetype-database (used by Linux distributions because the
+system copy is always present).
+
+This code will still need work to deal with Qt 5.14 changes.
+
+Task-number: QTCREATORBUG-19600
+Task-number: QTCREATORBUG-22636
+Change-Id: I6aed4df6a12e43c3ac8efffd15ac952a6e9d4770
+---
+
+diff --git a/src/libs/utils/mimetypes/mimeprovider.cpp b/src/libs/utils/mimetypes/mimeprovider.cpp
+index d444aa8..ce94215 100644
+--- a/src/libs/utils/mimetypes/mimeprovider.cpp
++++ b/src/libs/utils/mimetypes/mimeprovider.cpp
+@@ -784,32 +784,25 @@
+ {
+ if (!m_loaded /*|| shouldCheck()*/) {
+ m_loaded = true;
+-// bool fdoXmlFound = false;
+- QStringList allFiles;
++ QStringList allFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
++ QStringLiteral("mime/packages/freedesktop.org.xml"),
++ QStandardPaths::LocateFile);
+
+-// const QStringList packageDirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("mime/packages"), QStandardPaths::LocateDirectory);
+-// //qDebug() << "packageDirs=" << packageDirs;
+-// for (const QString &packageDir : packageDirs) {
+-// QDir dir(packageDir);
+-// const QStringList files = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
+-// //qDebug() << static_cast<const void *>(this) << packageDir << files;
+-// if (!fdoXmlFound)
+-// fdoXmlFound = files.contains(QLatin1String("freedesktop.org.xml"));
+-// QStringList::const_iterator endIt(files.constEnd());
+-// for (QStringList::const_iterator it(files.constBegin()); it != endIt; ++it) {
+-// allFiles.append(packageDir + QLatin1Char('/') + *it);
+-// }
+-// }
+-
+-// if (!fdoXmlFound) {
+-// // We could instead install the file as part of installing Qt?
+-#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
+- const char freedesktopOrgXml[] = ":/qt-project.org/qmime/packages/freedesktop.org.xml";
+-#else
+- const char freedesktopOrgXml[] = ":/qt-project.org/qmime/freedesktop.org.xml";
+-#endif
+- allFiles.prepend(QLatin1String(freedesktopOrgXml));
+-// }
++ if (allFiles.isEmpty()) {
++ // System freedsktop.org.xml file not found, try to use the one in QtCore.
++ // This is private API and has changed in the past:
++ // - Qt 5.11 added "package" subdir in 7a5644d6481a3c1a7416772998ca4e60c977bfbd
++ // - Qt 5.13 added an option to not bundle it at all
++ const QString fdoXml5_11 = QStringLiteral(":/qt-project.org/qmime/packages/freedesktop.org.xml");
++ const QString fdoXmlPre5_11 = QStringLiteral(":/qt-project.org/qmime/freedesktop.org.xml");
++ if (QFile::exists(fdoXml5_11))
++ allFiles << fdoXml5_11;
++ else if (QFile::exists(fdoXmlPre5_11))
++ allFiles << fdoXmlPre5_11;
++ else
++ qFatal("Utils::MimeXMLProvider: could not find the system freedesktop.org.xml file "
++ "and QtCore does not have an accessible copy.");
++ }
+
+ m_nameMimeTypeMap.clear();
+ m_aliases.clear();
+