From e799bcae6c0b040725a8ebd9c0a01ebe7e38d039 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 9 Nov 2023 14:22:52 +0100 Subject: [PATCH] Core: Register mimetype of softload plugin Change-Id: I81713d951caaf4e2d97fa1a58c4f512a280af351 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/coreplugin.cpp | 15 ++++++++++----- src/plugins/coreplugin/coreplugin.h | 3 +++ src/plugins/coreplugin/plugindialog.cpp | 5 ++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/plugins/coreplugin/coreplugin.cpp b/src/plugins/coreplugin/coreplugin.cpp index 82356fd5be7..9034d58563f 100644 --- a/src/plugins/coreplugin/coreplugin.cpp +++ b/src/plugins/coreplugin/coreplugin.cpp @@ -126,17 +126,22 @@ CoreArguments parseArguments(const QStringList &arguments) return args; } +void CorePlugin::loadMimeFromPlugin(const ExtensionSystem::PluginSpec *plugin) +{ + const QJsonObject metaData = plugin->metaData(); + const QJsonValue mimetypes = metaData.value("Mimetypes"); + QString mimetypeString; + if (Utils::readMultiLineString(mimetypes, &mimetypeString)) + Utils::addMimeTypes(plugin->name() + ".mimetypes", mimetypeString.trimmed().toUtf8()); +} + bool CorePlugin::initialize(const QStringList &arguments, QString *errorMessage) { // register all mime types from all plugins for (ExtensionSystem::PluginSpec *plugin : ExtensionSystem::PluginManager::plugins()) { if (!plugin->isEffectivelyEnabled()) continue; - const QJsonObject metaData = plugin->metaData(); - const QJsonValue mimetypes = metaData.value("Mimetypes"); - QString mimetypeString; - if (Utils::readMultiLineString(mimetypes, &mimetypeString)) - Utils::addMimeTypes(plugin->name() + ".mimetypes", mimetypeString.trimmed().toUtf8()); + loadMimeFromPlugin(plugin); } if (ThemeEntry::availableThemes().isEmpty()) { diff --git a/src/plugins/coreplugin/coreplugin.h b/src/plugins/coreplugin/coreplugin.h index 987c6d15817..148f9b5c97f 100644 --- a/src/plugins/coreplugin/coreplugin.h +++ b/src/plugins/coreplugin/coreplugin.h @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -54,6 +55,8 @@ public: static void setEnvironmentChanges(const Utils::EnvironmentItems &changes); static QString msgCrashpadInformation(); + static void loadMimeFromPlugin(const ExtensionSystem::PluginSpec *plugin); + public slots: void fileOpenRequest(const QString &); diff --git a/src/plugins/coreplugin/plugindialog.cpp b/src/plugins/coreplugin/plugindialog.cpp index 5dcdcde9d88..8aa87d4e829 100644 --- a/src/plugins/coreplugin/plugindialog.cpp +++ b/src/plugins/coreplugin/plugindialog.cpp @@ -3,6 +3,7 @@ #include "plugindialog.h" +#include "coreplugin.h" #include "coreplugintr.h" #include "dialogs/restartdialog.h" #include "icore.h" @@ -87,8 +88,10 @@ void PluginDialog::closeDialog() { PluginManager::writeSettings(); - for (PluginSpec *plugin : m_softLoad) + for (PluginSpec *plugin : m_softLoad) { PluginManager::loadPlugin(plugin); + CorePlugin::loadMimeFromPlugin(plugin); + } if (m_isRestartRequired) { RestartDialog restartDialog(ICore::dialogParent(),