┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorElvis Angelaccio <[email protected]>2016-08-23 17:58:48 +0200
committerElvis Angelaccio <[email protected]>2016-08-23 18:06:40 +0200
commit809ba746952c9768de0163153215d95bd233f5c6 (patch)
tree9520de72ce570399151513983581e6143bf15069
parent438ede27dc86938275d4ea1d8bd57b1e174f6053 (diff)
Filter json-only KFileItemAction plugins by mimetype
Commit d48b733 introduced support for kfileitemaction plugins with json metadata, but forgot to filter them by the commonMimeType (like KMimeTypeTrader::query() does with old-style plugins). So we need to load a plugin only when commonMimeType is equal to (or child of) one of the mimetypes supported by the plugin.
-rw-r--r--src/dolphincontextmenu.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp
index ff2e5478a..9507ba0a8 100644
--- a/src/dolphincontextmenu.cpp
+++ b/src/dolphincontextmenu.cpp
@@ -48,6 +48,7 @@
#include <QKeyEvent>
#include <QMenuBar>
#include <QMenu>
+#include <QMimeDatabase>
#include <panels/places/placesitem.h>
#include <panels/places/placesitemmodel.h>
@@ -519,8 +520,19 @@ void DolphinContextMenu::addFileItemPluginActions()
}
}
- const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction"), [](const KPluginMetaData& metaData) {
- return metaData.serviceTypes().contains(QStringLiteral("KFileItemAction/Plugin"));
+ const auto jsonPlugins = KPluginLoader::findPlugins(QStringLiteral("kf5/kfileitemaction"), [=](const KPluginMetaData& metaData) {
+ if (!metaData.serviceTypes().contains(QStringLiteral("KFileItemAction/Plugin"))) {
+ return false;
+ }
+
+ auto mimeType = QMimeDatabase().mimeTypeForName(commonMimeType);
+ foreach (const auto& supportedMimeType, metaData.mimeTypes()) {
+ if (mimeType.inherits(supportedMimeType)) {
+ return true;
+ }
+ }
+
+ return false;
});
foreach (const auto& jsonMetadata, jsonPlugins) {