forked from qt-creator/qt-creator
Re-fix QtCore resource path changing and prepare for Qt 5.13
Commit 9cf8ab3b3d
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
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -784,32 +784,25 @@ void MimeXMLProvider::ensureLoaded()
|
|||||||
{
|
{
|
||||||
if (!m_loaded /*|| shouldCheck()*/) {
|
if (!m_loaded /*|| shouldCheck()*/) {
|
||||||
m_loaded = true;
|
m_loaded = true;
|
||||||
// bool fdoXmlFound = false;
|
QStringList allFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation,
|
||||||
QStringList allFiles;
|
QStringLiteral("mime/packages/freedesktop.org.xml"),
|
||||||
|
QStandardPaths::LocateFile);
|
||||||
|
|
||||||
// const QStringList packageDirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("mime/packages"), QStandardPaths::LocateDirectory);
|
if (allFiles.isEmpty()) {
|
||||||
// //qDebug() << "packageDirs=" << packageDirs;
|
// System freedesktop.org.xml file not found, try to use the one in QtCore.
|
||||||
// for (const QString &packageDir : packageDirs) {
|
// This is private API and has changed in the past:
|
||||||
// QDir dir(packageDir);
|
// - Qt 5.11 added "package" subdir in 7a5644d6481a3c1a7416772998ca4e60c977bfbd
|
||||||
// const QStringList files = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
|
// - Qt 5.13 added an option to not bundle it at all
|
||||||
// //qDebug() << static_cast<const void *>(this) << packageDir << files;
|
const QString fdoXml5_11 = QStringLiteral(":/qt-project.org/qmime/packages/freedesktop.org.xml");
|
||||||
// if (!fdoXmlFound)
|
const QString fdoXmlPre5_11 = QStringLiteral(":/qt-project.org/qmime/freedesktop.org.xml");
|
||||||
// fdoXmlFound = files.contains(QLatin1String("freedesktop.org.xml"));
|
if (QFile::exists(fdoXml5_11))
|
||||||
// QStringList::const_iterator endIt(files.constEnd());
|
allFiles << fdoXml5_11;
|
||||||
// for (QStringList::const_iterator it(files.constBegin()); it != endIt; ++it) {
|
else if (QFile::exists(fdoXmlPre5_11))
|
||||||
// allFiles.append(packageDir + QLatin1Char('/') + *it);
|
allFiles << fdoXmlPre5_11;
|
||||||
// }
|
else
|
||||||
// }
|
qFatal("Utils::MimeXMLProvider: could not find the system freedesktop.org.xml file "
|
||||||
|
"and QtCore does not have an accessible copy.");
|
||||||
// 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));
|
|
||||||
// }
|
|
||||||
|
|
||||||
m_nameMimeTypeMap.clear();
|
m_nameMimeTypeMap.clear();
|
||||||
m_aliases.clear();
|
m_aliases.clear();
|
||||||
|
Reference in New Issue
Block a user