diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
index f0a979bb53a3f142c1b38344887a8ceecd84e499..6c276216c253c5b96f0e88abc33b6c3c8619738d 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp
@@ -48,26 +48,9 @@ static inline bool contains(const QmlItemNode &node, const QPointF &position)
     return node.isValid() && node.instanceSceneTransform().mapRect(node.instanceBoundingRect()).contains(position);
 }
 
-namespace Internal {
-
-
-} //Internal
-
-DesignerActionManager *DesignerActionManager::m_instance = 0;
-
-void DesignerActionManager::addDesignerAction(AbstractDesignerAction *newAction)
-{
-    instance()->addDesignerActionInternal(newAction);
-}
-
-QList<AbstractDesignerAction* > DesignerActionManager::designerActions()
-{
-    return instance()->factoriesInternal();
-}
-
 AbstractView *DesignerActionManager::view()
 {
-    return instance()->m_view;
+    return m_designerActionManagerView;
 }
 
 class VisiblityModelNodeAction : public ModelNodeAction
@@ -437,23 +420,13 @@ void DesignerActionManager::createDefaultDesignerActions()
                (goIntoComponentDisplayName, rootCategory, priorityGoIntoComponent, &goIntoComponent, &selectionIsComponent));
 }
 
-DesignerActionManager *DesignerActionManager::instance()
-{
-    if (!m_instance) {
-        m_instance = new DesignerActionManager;
-        createDefaultDesignerActions();
-    }
-
-    return m_instance;
-}
-
-void DesignerActionManager::addDesignerActionInternal(AbstractDesignerAction *newAction)
+void DesignerActionManager::addDesignerAction(AbstractDesignerAction *newAction)
 {
     m_designerActions.append(QSharedPointer<AbstractDesignerAction>(newAction));
-    m_view->setDesignerActionList(designerActions());
+    m_designerActionManagerView->setDesignerActionList(designerActions());
 }
 
-QList<AbstractDesignerAction* > DesignerActionManager::factoriesInternal() const
+QList<AbstractDesignerAction* > DesignerActionManager::designerActions() const
 {
     QList<AbstractDesignerAction* > list;
     foreach (const QSharedPointer<AbstractDesignerAction> &pointer, m_designerActions) {
@@ -463,14 +436,13 @@ QList<AbstractDesignerAction* > DesignerActionManager::factoriesInternal() const
     return list;
 }
 
-DesignerActionManager::DesignerActionManager()
-    : m_view(new DesignerActionManagerView)
+DesignerActionManager::DesignerActionManager(DesignerActionManagerView *designerActionManagerView)
+    : m_designerActionManagerView(designerActionManagerView)
 {
 }
 
 DesignerActionManager::~DesignerActionManager()
 {
-    delete m_view;
 }
 
 } //QmlDesigner
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h
index 7f3f34b1214a74b584edbe8f3360755f09781f76..8266cd778a824aa37cd15ad7d0738f4f90621c63 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.h
@@ -40,23 +40,18 @@ class DesignerActionManagerView;
 
 class QMLDESIGNERCORE_EXPORT DesignerActionManager {
 public:
-    static void addDesignerAction(AbstractDesignerAction *newAction);
-    static QList<AbstractDesignerAction* > designerActions();
+    DesignerActionManager(DesignerActionManagerView *designerActionManagerView);
+    ~DesignerActionManager();
 
-    static void createDefaultDesignerActions();
-    static AbstractView *view();
+    void addDesignerAction(AbstractDesignerAction *newAction);
+    QList<AbstractDesignerAction* > designerActions() const;
 
-protected:
-    static DesignerActionManager *instance();
-    void addDesignerActionInternal(AbstractDesignerAction *newAction);
-    QList<AbstractDesignerAction* > factoriesInternal() const;
-    DesignerActionManager();
-    ~DesignerActionManager();
+    void createDefaultDesignerActions();
+    AbstractView *view();
 
 private:
-    static DesignerActionManager *m_instance;
     QList<QSharedPointer<AbstractDesignerAction> > m_designerActions;
-    DesignerActionManagerView *m_view;
+    DesignerActionManagerView *m_designerActionManagerView;
 };
 
 } //QmlDesigner
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp
index 518b9e040942e45145a3b4cb025d2f031a0efd5a..87cd3969d406dca733f3210c9824d78eb9fe6558 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.cpp
@@ -36,9 +36,12 @@ namespace QmlDesigner {
 
 DesignerActionManagerView::DesignerActionManagerView()
     : AbstractView(0),
+      m_designerActionManager(this),
       m_isInRewriterTransaction(false),
       m_setupContextDirty(false)
-{}
+{
+    m_designerActionManager.createDefaultDesignerActions();
+}
 
 void DesignerActionManagerView::modelAttached(Model *model)
 {
@@ -167,6 +170,16 @@ void DesignerActionManagerView::signalHandlerPropertiesChanged(const QVector<Sig
     setupContext();
 }
 
+DesignerActionManager &DesignerActionManagerView::designerActionManager()
+{
+    return m_designerActionManager;
+}
+
+const DesignerActionManager &DesignerActionManagerView::designerActionManager() const
+{
+    return m_designerActionManager;
+}
+
 void DesignerActionManagerView::setupContext()
 {
     if (m_isInRewriterTransaction) {
diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h
index 83572006971eee287dee8df5beac1d50bf1d0560..dee7021b3cf86cf9db33b951f9e0dd9a14748c1d 100644
--- a/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h
+++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanagerview.h
@@ -32,6 +32,8 @@
 
 #include <abstractview.h>
 
+#include "designeractionmanager.h"
+
 namespace QmlDesigner {
 
 class AbstractDesignerAction;
@@ -79,10 +81,14 @@ public:
     void setDesignerActionList(const QList<AbstractDesignerAction* > &designerActionList);
     void signalHandlerPropertiesChanged(const QVector<SignalHandlerProperty> &/*propertyList*/, PropertyChangeFlags /*propertyChange*/);
 
+    DesignerActionManager &designerActionManager();
+    const DesignerActionManager &designerActionManager() const;
+
 protected:
     void setupContext();
 
 private:
+    DesignerActionManager m_designerActionManager;
     QList<AbstractDesignerAction* > m_designerActionList;
     bool m_isInRewriterTransaction;
     bool m_setupContextDirty;
diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp
index 51b80734b1bd72cb13bfe4d80e83055139c200f8..6a8a717ac4a816bab66446d90db3206ceaa59558 100644
--- a/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp
+++ b/src/plugins/qmldesigner/components/componentcore/modelnodecontextmenu.cpp
@@ -30,6 +30,7 @@
 #include "modelnodecontextmenu.h"
 #include "modelnodecontextmenu_helper.h"
 #include "designeractionmanager.h"
+#include <qmldesignerplugin.h>
 
 #include <modelnode.h>
 
@@ -98,7 +99,7 @@ void ModelNodeContextMenu::execute(const QPoint &position, bool selectionMenuBoo
 
 
      QSet<AbstractDesignerAction* > factories =
-             QSet<AbstractDesignerAction* >::fromList(DesignerActionManager::designerActions());
+             QSet<AbstractDesignerAction* >::fromList(QmlDesignerPlugin::instance()->designerActionManager().designerActions());
 
      populateMenu(factories, QString(""), mainMenu, m_selectionContext);
 
diff --git a/src/plugins/qmldesigner/designercore/include/viewmanager.h b/src/plugins/qmldesigner/designercore/include/viewmanager.h
index 6cb1a12a9c95cc3ec5bcbd762a5b28014ee6ca1f..fb2e7b71c0da21f164da186daf99655726a32d99 100644
--- a/src/plugins/qmldesigner/designercore/include/viewmanager.h
+++ b/src/plugins/qmldesigner/designercore/include/viewmanager.h
@@ -42,6 +42,7 @@
 #include <componentview.h>
 #include <debugview.h>
 #include <importmanagerview.h>
+#include <designeractionmanagerview.h>
 #include <QWidgetAction>
 
 namespace QmlDesigner {
@@ -89,6 +90,9 @@ public:
 
     QWidgetAction *componentViewAction();
 
+    DesignerActionManager &designerActionManager();
+    const DesignerActionManager &designerActionManager() const;
+
 private: // functions
     Q_DISABLE_COPY(ViewManager)
 
@@ -115,6 +119,7 @@ private: // variables
     PropertyEditorView m_propertyEditorView;
     StatesEditorView m_statesEditorView;
     NodeInstanceView m_nodeInstanceView;
+    DesignerActionManagerView m_designerActionManagerView;
 
     QList<QWeakPointer<AbstractView> > m_additionalViews;
 };
diff --git a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp
index 079f0d5ba37302171b52926d2ef96bfc2c29af96..6ed7323f2c133abac78c89cf1407a8e333275d09 100644
--- a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp
+++ b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp
@@ -1,7 +1,6 @@
 #include "viewmanager.h"
 
 #include "componentaction.h"
-#include "designeractionmanager.h"
 #include "designmodewidget.h"
 #include "crumblebar.h"
 
@@ -98,7 +97,7 @@ void ViewManager::detachViewsExceptRewriterAndComponetView()
 {
     switchStateEditorViewToBaseState();
     detachAdditionalViews();
-    currentModel()->detachView(DesignerActionManager::view());
+    currentModel()->detachView(&m_designerActionManagerView);
     currentModel()->detachView(&m_formEditorView);
     currentModel()->detachView(&m_navigatorView);
     currentModel()->detachView(&m_itemLibraryView);
@@ -152,7 +151,7 @@ void ViewManager::attachViewsExceptRewriterAndComponetView()
     attachItemLibraryView();
     currentModel()->attachView(&m_statesEditorView);
     currentModel()->attachView(&m_propertyEditorView);
-    currentModel()->attachView(DesignerActionManager::view());
+    currentModel()->attachView(&m_designerActionManagerView);
     attachAdditionalViews();
     switchStateEditorViewToSavedState();
 }
@@ -236,6 +235,16 @@ QWidgetAction *ViewManager::componentViewAction()
     return m_componentView.action();
 }
 
+DesignerActionManager &ViewManager::designerActionManager()
+{
+    return m_designerActionManagerView.designerActionManager();
+}
+
+const DesignerActionManager &ViewManager::designerActionManager() const
+{
+    return m_designerActionManagerView.designerActionManager();
+}
+
 Model *ViewManager::currentModel() const
 {
     return currentDesignDocument()->currentModel();
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index feaffda6590f407e393a3b793c4656ddf13f194d..d9e93b302934848beff8e33962817e588ba15bbe 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -419,6 +419,16 @@ const ViewManager &QmlDesignerPlugin::viewManager() const
     return m_viewManager;
 }
 
+DesignerActionManager &QmlDesignerPlugin::designerActionManager()
+{
+    return m_viewManager.designerActionManager();
+}
+
+const DesignerActionManager &QmlDesignerPlugin::designerActionManager() const
+{
+    return m_viewManager.designerActionManager();
+}
+
 void QmlDesignerPlugin::switchTextDesign()
 {
     if (Core::ModeManager::currentMode()->id() == Core::Constants::MODE_EDIT) {
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h
index 9ed708e55dc0bb51997288beb1a1495cc19e324d..36a72d971d827db6df1743177fa2544692f94d26 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.h
+++ b/src/plugins/qmldesigner/qmldesignerplugin.h
@@ -39,6 +39,7 @@
 #include "documentmanager.h"
 #include "viewmanager.h"
 #include "shortcutmanager.h"
+#include <designeractionmanager.h>
 
 #include <QStringList>
 
@@ -82,6 +83,9 @@ public:
     ViewManager &viewManager();
     const ViewManager &viewManager() const;
 
+    DesignerActionManager &designerActionManager();
+    const DesignerActionManager &designerActionManager() const;
+
     DesignerSettings settings();
     void setSettings(const DesignerSettings &s);