diff --git a/src/libtomahawk/utils/LinkGenerator.cpp b/src/libtomahawk/utils/LinkGenerator.cpp index 085264e90..58dadf61e 100644 --- a/src/libtomahawk/utils/LinkGenerator.cpp +++ b/src/libtomahawk/utils/LinkGenerator.cpp @@ -72,6 +72,13 @@ void LinkGenerator::addPlugin( LinkGeneratorPlugin* plugin ) } +void +LinkGenerator::removePlugin( LinkGeneratorPlugin* plugin ) +{ + m_plugins.removeAll( plugin ); +} + + void LinkGenerator::copyScriptJobResultToClipboard( const QVariantMap& data ) { diff --git a/src/libtomahawk/utils/LinkGenerator.h b/src/libtomahawk/utils/LinkGenerator.h index 1ad111a3c..76f6cd036 100644 --- a/src/libtomahawk/utils/LinkGenerator.h +++ b/src/libtomahawk/utils/LinkGenerator.h @@ -41,6 +41,7 @@ public: virtual ~LinkGenerator(); void addPlugin( LinkGeneratorPlugin* plugin ); + void removePlugin( LinkGeneratorPlugin* plugin ); // TODO: openLink(QString, QString, QString) is a rather annoying special case. Can we get rid of it? ScriptJob* openLink( const QString& title, const QString& artist, const QString& album ) const diff --git a/src/libtomahawk/utils/LinkGeneratorPlugin.cpp b/src/libtomahawk/utils/LinkGeneratorPlugin.cpp index ab777c2d6..8501265b7 100644 --- a/src/libtomahawk/utils/LinkGeneratorPlugin.cpp +++ b/src/libtomahawk/utils/LinkGeneratorPlugin.cpp @@ -17,6 +17,8 @@ */ #include "LinkGeneratorPlugin.h" +#include "LinkGenerator.h" + #include "../Query.h" #include "../Track.h" #include "../Artist.h" @@ -24,6 +26,8 @@ Tomahawk::Utils::LinkGeneratorPlugin::~LinkGeneratorPlugin() { + // do this on destroyed() if you ever make this a QObject + LinkGenerator::instance()->removePlugin( this ); }