forked from qt-creator/qt-creator
Delay modifications to MIME database until first use
Initialization of the MIME database takes time, and it is good to avoid this during startup. We nevertheless want to apply some modifications to the MIME database, so we need to delay these modifications until first use. Allow registration of additional initialization functions. Since the initialization functions access the MIME database, which does locking for thread- safety, we need to separate the initialization to outside these locking functions. Change-Id: I2b1706347768bcf081644e078ccfa45302d61641 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -746,19 +746,25 @@ MimeTypeSettingsPrivate::UserMimeTypeHash MimeTypeSettingsPrivate::readUserModif
|
||||
return userMimeTypes;
|
||||
}
|
||||
|
||||
void MimeTypeSettingsPrivate::applyUserModifiedMimeTypes(const UserMimeTypeHash &mimeTypes)
|
||||
static void registerUserModifiedMimeTypes(const MimeTypeSettingsPrivate::UserMimeTypeHash &mimeTypes)
|
||||
{
|
||||
// register in mime data base, and remember for later
|
||||
for (auto it = mimeTypes.constBegin(); it != mimeTypes.constEnd(); ++it) {
|
||||
Utils::MimeType mt = Utils::mimeTypeForName(it.key());
|
||||
if (!mt.isValid()) // loaded from settings
|
||||
if (!mt.isValid())
|
||||
continue;
|
||||
m_userModifiedMimeTypes.insert(it.key(), it.value());
|
||||
Utils::setGlobPatternsForMimeType(mt, it.value().globPatterns);
|
||||
Utils::setMagicRulesForMimeType(mt, it.value().rules);
|
||||
}
|
||||
}
|
||||
|
||||
void MimeTypeSettingsPrivate::applyUserModifiedMimeTypes(const UserMimeTypeHash &mimeTypes)
|
||||
{
|
||||
// register in mime data base, and remember for later
|
||||
for (auto it = mimeTypes.constBegin(); it != mimeTypes.constEnd(); ++it)
|
||||
m_userModifiedMimeTypes.insert(it.key(), it.value());
|
||||
registerUserModifiedMimeTypes(mimeTypes);
|
||||
}
|
||||
|
||||
// MimeTypeSettingsPage
|
||||
|
||||
MimeTypeSettings::MimeTypeSettings()
|
||||
@@ -792,8 +798,9 @@ QStringList MimeTypeSettings::keywords() const
|
||||
void MimeTypeSettings::restoreSettings()
|
||||
{
|
||||
MimeTypeSettingsPrivate::UserMimeTypeHash mimetypes
|
||||
= MimeTypeSettingsPrivate::readUserModifiedMimeTypes();
|
||||
MimeTypeSettingsPrivate::applyUserModifiedMimeTypes(mimetypes);
|
||||
= MimeTypeSettingsPrivate::readUserModifiedMimeTypes();
|
||||
MimeTypeSettingsPrivate::m_userModifiedMimeTypes = mimetypes;
|
||||
Utils::addMimeInitializer([mimetypes] { registerUserModifiedMimeTypes(mimetypes); });
|
||||
}
|
||||
|
||||
QWidget *MimeEditorDelegate::createEditor(QWidget *parent,
|
||||
|
||||
Reference in New Issue
Block a user