diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index 917642e43c0..bbb6b2d930c 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -907,8 +907,10 @@ void PluginManagerPrivate::writeSettings() */ void PluginManagerPrivate::readSettings() { - if (globalSettings) + if (globalSettings) { defaultDisabledPlugins = globalSettings->value(QLatin1String(C_IGNORED_PLUGINS)).toStringList(); + defaultEnabledPlugins = globalSettings->value(QLatin1String(C_FORCEENABLED_PLUGINS)).toStringList(); + } if (settings) { disabledPlugins = settings->value(QLatin1String(C_IGNORED_PLUGINS)).toStringList(); forceEnabledPlugins = settings->value(QLatin1String(C_FORCEENABLED_PLUGINS)).toStringList(); @@ -1225,9 +1227,14 @@ void PluginManagerPrivate::readPluginPaths() collection = new PluginCollection(spec->category()); pluginCategories.insert(spec->category(), collection); } - if (defaultDisabledPlugins.contains(spec->name())) { + // defaultDisabledPlugins and defaultEnabledPlugins from install settings + // is used to override the defaults read from the plugin spec + if (!spec->isDisabledByDefault() && defaultDisabledPlugins.contains(spec->name())) { spec->setDisabledByDefault(true); spec->setEnabled(false); + } else if (spec->isDisabledByDefault() && defaultEnabledPlugins.contains(spec->name())) { + spec->setDisabledByDefault(false); + spec->setEnabled(true); } if (spec->isDisabledByDefault() && forceEnabledPlugins.contains(spec->name())) spec->setEnabled(true); diff --git a/src/libs/extensionsystem/pluginmanager_p.h b/src/libs/extensionsystem/pluginmanager_p.h index 58bb1912379..15e2521b572 100644 --- a/src/libs/extensionsystem/pluginmanager_p.h +++ b/src/libs/extensionsystem/pluginmanager_p.h @@ -104,7 +104,8 @@ public: QStringList pluginPaths; QString extension; QList allObjects; // ### make this a QList > > ? - QStringList defaultDisabledPlugins; + QStringList defaultDisabledPlugins; // Plugins/Ignored from install settings + QStringList defaultEnabledPlugins; // Plugins/ForceEnabled from install settings QStringList disabledPlugins; QStringList forceEnabledPlugins; // delayed initialization