diff --git a/src/plasmaquick/configview.cpp b/src/plasmaquick/configview.cpp --- a/src/plasmaquick/configview.cpp +++ b/src/plasmaquick/configview.cpp @@ -32,6 +32,7 @@ #include #include +#include #include #include #include @@ -141,7 +142,15 @@ delete object; } - const QStringList kcms = KPluginMetaData::readStringList(applet.data()->pluginMetaData().rawData(), QStringLiteral("X-Plasma-ConfigPlugins")); + QStringList kcms = KPluginMetaData::readStringList(applet.data()->pluginMetaData().rawData(), QStringLiteral("X-Plasma-ConfigPlugins")); + + // filter out non-authorized KCMs + // KAuthorized expects KCMs with .desktop suffix, so we can't just pass everything + // to KAuthorized::authorizeControlModules verbatim + kcms.erase(std::remove_if(kcms.begin(), kcms.end(), [](const QString &kcm) { + return !KAuthorized::authorizeControlModule(kcm + QLatin1String(".desktop")); + }), kcms.end()); + if (!kcms.isEmpty()) { if (!configModel) { configModel = new ConfigModel(q);