diff --git a/src/plugins/macros/macrolocatorfilter.cpp b/src/plugins/macros/macrolocatorfilter.cpp index 2d4d72386fbec97f8be660c116041325c891d1d0..03df032dc6d5d1517f7a622f5faaecf31e58bdb5 100644 --- a/src/plugins/macros/macrolocatorfilter.cpp +++ b/src/plugins/macros/macrolocatorfilter.cpp @@ -57,7 +57,7 @@ QList<Locator::FilterEntry> MacroLocatorFilter::matchesFor(QFutureInterface<Loca Q_UNUSED(future) QList<Locator::FilterEntry> result; - const QMap<QString, Macro*> ¯os = MacroManager::instance()->macros(); + const QMap<QString, Macro*> ¯os = MacroManager::macros(); QMapIterator<QString, Macro*> it(macros); while (it.hasNext()) { diff --git a/src/plugins/macros/macromanager.cpp b/src/plugins/macros/macromanager.cpp index 002a12427d897556bfa9d4f10d165109f41ee658..cafcc25791f1b2773227ef6257225427770c7a0d 100644 --- a/src/plugins/macros/macromanager.cpp +++ b/src/plugins/macros/macromanager.cpp @@ -253,10 +253,10 @@ MacroManager::MacroManager(QObject *parent) : QObject(parent), d(new MacroManagerPrivate(this)) { + m_instance = this; registerMacroHandler(d->actionHandler); registerMacroHandler(d->findHandler); registerMacroHandler(d->textEditorHandler); - m_instance = this; } MacroManager::~MacroManager() @@ -360,14 +360,14 @@ void MacroManager::deleteMacro(const QString &name) } } -const QMap<QString,Macro*> &MacroManager::macros() const +const QMap<QString,Macro*> &MacroManager::macros() { - return d->macros; + return m_instance->d->macros; } void MacroManager::registerMacroHandler(IMacroHandler *handler) { - d->handlers.prepend(handler); + m_instance->d->handlers.prepend(handler); } MacroManager *MacroManager::instance() @@ -392,7 +392,7 @@ void Macros::MacroManager::saveLastMacro() d->showSaveDialog(); } -QString Macros::MacroManager::macrosDirectory() const +QString Macros::MacroManager::macrosDirectory() { const QString &path = Core::ICore::userResourcePath() + QLatin1String("/macros"); diff --git a/src/plugins/macros/macromanager.h b/src/plugins/macros/macromanager.h index 045d140bc53af1d0f8ed78f46993cb0a764ff56f..ad2d33d3d4be325ed522240f06642555a6aa10d7 100644 --- a/src/plugins/macros/macromanager.h +++ b/src/plugins/macros/macromanager.h @@ -45,23 +45,21 @@ class Macro; class IMacroHandler; namespace Internal { - class MacroOptionsWidget; +class MacroOptionsWidget; +class MacrosPlugin; } class MACROS_EXPORT MacroManager : public QObject { Q_OBJECT public: - explicit MacroManager(QObject *parent = 0); - ~MacroManager(); - static MacroManager *instance(); - const QMap<QString, Macro *> ¯os() const; + static const QMap<QString, Macro *> ¯os(); - void registerMacroHandler(IMacroHandler *handler); + static void registerMacroHandler(IMacroHandler *handler); - QString macrosDirectory() const; + static QString macrosDirectory(); public slots: void startMacro(); @@ -77,10 +75,15 @@ protected: void changeMacro(const QString &name, const QString &description); private: + explicit MacroManager(QObject *parent = 0); + ~MacroManager(); + static MacroManager *m_instance; class MacroManagerPrivate; MacroManagerPrivate* d; + + friend class Internal::MacrosPlugin; }; } // namespace Macros diff --git a/src/plugins/macros/macrooptionswidget.cpp b/src/plugins/macros/macrooptionswidget.cpp index fede998dfaf25fa712b24eede59bbc64b5cf0f18..dfe386d3064b57dd7ddf2803cf51ab384178c726 100644 --- a/src/plugins/macros/macrooptionswidget.cpp +++ b/src/plugins/macros/macrooptionswidget.cpp @@ -97,9 +97,9 @@ void MacroOptionsWidget::initialize() void MacroOptionsWidget::createTable() { - QDir dir(MacroManager::instance()->macrosDirectory()); + QDir dir(MacroManager::macrosDirectory()); const Core::Id base = Core::Id(Constants::PREFIX_MACRO); - QMapIterator<QString, Macro *> it(MacroManager::instance()->macros()); + QMapIterator<QString, Macro *> it(MacroManager::macros()); while (it.hasNext()) { it.next(); QFileInfo fileInfo(it.value()->fileName()); diff --git a/src/plugins/macros/macrosplugin.cpp b/src/plugins/macros/macrosplugin.cpp index b31aa2f5594e0efc17a6e2a630e46aa824cf272c..fe34ddf4d00caceb5ee3ff0decb2d129b0948d64 100644 --- a/src/plugins/macros/macrosplugin.cpp +++ b/src/plugins/macros/macrosplugin.cpp @@ -59,6 +59,7 @@ MacrosPlugin::MacrosPlugin() MacrosPlugin::~MacrosPlugin() { + delete m_macroManager; } bool MacrosPlugin::initialize(const QStringList &arguments, QString *errorMessage)