mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-12-08 23:03:46 +00:00
77 lines
3.8 KiB
Diff
77 lines
3.8 KiB
Diff
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();
|
|
|