diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 7aa81d784f85b1d8a34e9106f22ae4473c8ceb35..5f2c72568c7e7df115a49f4fe6590fa41b545ff2 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -559,18 +559,12 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
     const QString qmlInspectorGroup = QLatin1String("QML.Inspector");
     item = new SavedAction(this);
     item->setSettingsKey(qmlInspectorGroup, QLatin1String("QmlInspector.ShowAppOnTop"));
-    item->setText(tr("Show Application On Top"));
-    item->setCheckable(true);
     item->setDefaultValue(false);
-    item->setIcon(QIcon(QLatin1String(":/debugger/images/qml/app-on-top.png")));
     insertItem(ShowAppOnTop, item);
 
     item = new SavedAction(this);
     item->setSettingsKey(qmlInspectorGroup, QLatin1String("QmlInspector.FromQml"));
-    item->setText(tr("Apply Changes on Save"));
-    item->setCheckable(true);
     item->setDefaultValue(false);
-    item->setIcon(QIcon(QLatin1String(":/debugger/images/qml/apply-on-save.png")));
     insertItem(QmlUpdateOnSave, item);
 }
 
diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h
index d8815540f02848c2b99b4f9b73090e897449b109..b5d2e26be03263c870228ef71db390669b373e45 100644
--- a/src/plugins/debugger/debuggerconstants.h
+++ b/src/plugins/debugger/debuggerconstants.h
@@ -59,6 +59,8 @@ const char STEPOUT[]                = "Debugger.StepOut";
 const char NEXT[]                   = "Debugger.NextLine";
 const char REVERSE[]                = "Debugger.ReverseDirection";
 const char OPERATE_BY_INSTRUCTION[] = "Debugger.OperateByInstruction";
+const char QML_SHOW_APP_ON_TOP[]    = "Debugger.QmlShowAppOnTop";
+const char QML_UPDATE_ON_SAVE[]     = "Debugger.QmlUpdateOnSave";
 const char QML_SELECTTOOL[]         = "Debugger.QmlSelectTool";
 const char QML_ZOOMTOOL[]           = "Debugger.QmlZoomTool";
 
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index df09982af9b0386eed79174b561fad1b772c2a8b..75437c8cc955de33ab1a4961d93c2f4587451cc6 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -2848,6 +2848,20 @@ void DebuggerPluginPrivate::extensionsInitialized()
     connect(action(OperateByInstruction), SIGNAL(triggered(bool)),
         SLOT(handleOperateByInstructionTriggered(bool)));
 
+    QAction *qmlShowAppOnTopDummyAction = new QAction(tr("Show Application On Top"), this);
+    qmlShowAppOnTopDummyAction->setCheckable(true);
+    qmlShowAppOnTopDummyAction->setIcon(QIcon(_(":/debugger/images/qml/app-on-top.png")));
+    qmlShowAppOnTopDummyAction->setEnabled(false);
+    ActionManager::registerAction(qmlShowAppOnTopDummyAction, Constants::QML_SHOW_APP_ON_TOP,
+                                  globalcontext);
+
+    QAction *qmlUpdateOnSaveDummyAction = new QAction(tr("Apply Changes on Save"), this);
+    qmlUpdateOnSaveDummyAction->setCheckable(true);
+    qmlUpdateOnSaveDummyAction->setIcon(QIcon(_(":/debugger/images/qml/apply-on-save.png")));
+    qmlUpdateOnSaveDummyAction->setEnabled(false);
+    ActionManager::registerAction(qmlUpdateOnSaveDummyAction, Constants::QML_UPDATE_ON_SAVE,
+                                  globalcontext);
+
     QAction *qmlSelectDummyAction = new QAction(tr("Select"), this);
     qmlSelectDummyAction->setCheckable(true);
     qmlSelectDummyAction->setIcon(QIcon(_(":/debugger/images/qml/select.png")));
@@ -3256,8 +3270,8 @@ void DebuggerPluginPrivate::extensionsInitialized()
     hbox = new QHBoxLayout(qmlToolbar);
     hbox->setMargin(0);
     hbox->setSpacing(0);
-    hbox->addWidget(toolButton(action(QmlUpdateOnSave)));
-    hbox->addWidget(toolButton(action(ShowAppOnTop)));
+    hbox->addWidget(toolButton(Constants::QML_UPDATE_ON_SAVE));
+    hbox->addWidget(toolButton(Constants::QML_SHOW_APP_ON_TOP));
     hbox->addWidget(new StyledSeparator);
     hbox->addWidget(toolButton(Constants::QML_SELECTTOOL));
     hbox->addWidget(toolButton(Constants::QML_ZOOMTOOL));
diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.cpp b/src/plugins/debugger/qml/qmlinspectoradapter.cpp
index e6c3ec0cf9ed2b2498aeb8c3a86e77d1f57edd13..4d6a839bb3a3b4cb6951228fb9c57cd059ab324c 100644
--- a/src/plugins/debugger/qml/qmlinspectoradapter.cpp
+++ b/src/plugins/debugger/qml/qmlinspectoradapter.cpp
@@ -33,7 +33,7 @@
 #include "debuggercore.h"
 #include "debuggerstringutils.h"
 #include "qmladapter.h"
-#include "qmlengine.h"
+#include "debuggerengine.h"
 #include "qmlinspectoragent.h"
 #include "qmllivetextpreview.h"
 
@@ -59,7 +59,7 @@ namespace Internal {
  * integration with the text editor.
  */
 QmlInspectorAdapter::QmlInspectorAdapter(QmlAdapter *debugAdapter,
-                                         QmlEngine *engine,
+                                         DebuggerEngine *engine,
                                          QObject *parent)
     : QObject(parent)
     , m_debugAdapter(debugAdapter)
@@ -75,8 +75,14 @@ QmlInspectorAdapter::QmlInspectorAdapter(QmlAdapter *debugAdapter,
     , m_inspectorToolsContext("Debugger.QmlInspector")
     , m_selectAction(new QAction(this))
     , m_zoomAction(new QAction(this))
+    , m_showAppOnTopAction(debuggerCore()->action(ShowAppOnTop))
+    , m_updateOnSaveAction(debuggerCore()->action(QmlUpdateOnSave))
     , m_engineClientConnected(false)
 {
+    if (!m_engine->isMasterEngine())
+        m_engine = m_engine->masterEngine();
+    connect(m_engine, SIGNAL(stateChanged(Debugger::DebuggerState)),
+            SLOT(onEngineStateChanged(Debugger::DebuggerState)));
     connect(m_agent, SIGNAL(objectFetched(QmlDebug::ObjectReference)),
             SLOT(onObjectFetched(QmlDebug::ObjectReference)));
     connect(m_agent, SIGNAL(jumpToObjectDefinition(QmlDebug::FileReference,int)),
@@ -131,11 +137,21 @@ QmlInspectorAdapter::QmlInspectorAdapter(QmlAdapter *debugAdapter,
     m_zoomAction->setObjectName(QLatin1String("QML Zoom Action"));
     m_selectAction->setCheckable(true);
     m_zoomAction->setCheckable(true);
+    m_showAppOnTopAction->setCheckable(true);
+    m_updateOnSaveAction->setCheckable(true);
+    m_selectAction->setEnabled(false);
+    m_zoomAction->setEnabled(false);
+    m_showAppOnTopAction->setEnabled(false);
+    m_updateOnSaveAction->setEnabled(false);
 
     connect(m_selectAction, SIGNAL(triggered(bool)),
             SLOT(onSelectActionTriggered(bool)));
     connect(m_zoomAction, SIGNAL(triggered(bool)),
             SLOT(onZoomActionTriggered(bool)));
+    connect(m_showAppOnTopAction, SIGNAL(triggered(bool)),
+            SLOT(onShowAppOnTopChanged(bool)));
+    connect(m_updateOnSaveAction, SIGNAL(triggered(bool)),
+            SLOT(onUpdateOnSaveChanged(bool)));
 }
 
 QmlInspectorAdapter::~QmlInspectorAdapter()
@@ -193,56 +209,49 @@ void QmlInspectorAdapter::toolsClientStatusChanged(QmlDebug::ClientStatus status
         connect(client, SIGNAL(reloaded()), SLOT(onReloaded()));
         connect(client, SIGNAL(destroyedObject(int)), SLOT(onDestroyedObject(int)));
 
-        // only enable zoom action for Qt 4.x/old client
-        // (zooming is integrated into selection tool in Qt 5).
-        m_zoomAction->setEnabled(
-                    qobject_cast<DeclarativeToolsClient*>(client) != 0);
-
         // register actions here
         // because there can be multiple QmlEngines
         // at the same time (but hopefully one one is connected)
         Core::ActionManager::registerAction(m_selectAction,
-                           Core::Id(Constants::QML_SELECTTOOL),
-                           m_inspectorToolsContext);
+                                            Core::Id(Constants::QML_SELECTTOOL),
+                                            m_inspectorToolsContext);
         Core::ActionManager::registerAction(m_zoomAction, Core::Id(Constants::QML_ZOOMTOOL),
-                           m_inspectorToolsContext);
-
-        Core::ICore::updateAdditionalContexts(Core::Context(),
-                                       m_inspectorToolsContext);
+                                            m_inspectorToolsContext);
+        Core::ActionManager::registerAction(m_showAppOnTopAction,
+                                            Core::Id(Constants::QML_SHOW_APP_ON_TOP),
+                                            m_inspectorToolsContext);
+        Core::ActionManager::registerAction(m_updateOnSaveAction,
+                                            Core::Id(Constants::QML_UPDATE_ON_SAVE),
+                                            m_inspectorToolsContext);
 
-        Utils::SavedAction *action = debuggerCore()->action(QmlUpdateOnSave);
-        connect(action, SIGNAL(valueChanged(QVariant)),
-                SLOT(onUpdateOnSaveChanged(QVariant)));
+        Core::ICore::updateAdditionalContexts(Core::Context(), m_inspectorToolsContext);
 
-        action = debuggerCore()->action(ShowAppOnTop);
-        connect(action, SIGNAL(valueChanged(QVariant)),
-                SLOT(onShowAppOnTopChanged(QVariant)));
-        if (action->isChecked())
+        m_toolsClientConnected = true;
+        onEngineStateChanged(m_engine->state());
+        if (m_showAppOnTopAction->isChecked())
             m_toolsClient->showAppOnTop(true);
 
-        m_toolsClientConnected = true;
     } else if (m_toolsClientConnected && client == m_toolsClient) {
         disconnect(client, SIGNAL(currentObjectsChanged(QList<int>)),
                    this, SLOT(selectObjectsFromToolsClient(QList<int>)));
         disconnect(client, SIGNAL(logActivity(QString,QString)),
                    m_debugAdapter, SLOT(logServiceActivity(QString,QString)));
 
-        Core::ActionManager::unregisterAction(m_selectAction,
-                             Core::Id(Constants::QML_SELECTTOOL));
-        Core::ActionManager::unregisterAction(m_zoomAction,
-                             Core::Id(Constants::QML_ZOOMTOOL));
+        Core::ActionManager::unregisterAction(m_selectAction, Core::Id(Constants::QML_SELECTTOOL));
+        Core::ActionManager::unregisterAction(m_zoomAction, Core::Id(Constants::QML_ZOOMTOOL));
+        Core::ActionManager::unregisterAction(m_showAppOnTopAction,
+                                              Core::Id(Constants::QML_SHOW_APP_ON_TOP));
+        Core::ActionManager::unregisterAction(m_updateOnSaveAction,
+                                              Core::Id(Constants::QML_UPDATE_ON_SAVE));
 
-        m_selectAction->setChecked(false);
-        m_zoomAction->setChecked(false);
-        Core::ICore::updateAdditionalContexts(m_inspectorToolsContext,
-                                       Core::Context());
-
-        Utils::SavedAction *action = debuggerCore()->action(QmlUpdateOnSave);
-        disconnect(action, 0, this, 0);
-        action = debuggerCore()->action(ShowAppOnTop);
-        disconnect(action, 0, this, 0);
+        Core::ICore::updateAdditionalContexts(m_inspectorToolsContext, Core::Context());
 
+        enableTools(false);
         m_toolsClientConnected = false;
+        m_selectAction->setCheckable(false);
+        m_zoomAction->setCheckable(false);
+        m_showAppOnTopAction->setCheckable(false);
+        m_updateOnSaveAction->setCheckable(false);
     }
 }
 
@@ -358,7 +367,7 @@ void QmlInspectorAdapter::updatePendingPreviewDocuments(QmlJS::Document::Ptr doc
         preview->associateEditor(editor);
 }
 
-void QmlInspectorAdapter::onSelectActionTriggered(bool checked)
+void QmlInspectorAdapter::onSelectActionTriggered(const bool checked)
 {
     QTC_ASSERT(toolsClient(), return);
     if (checked) {
@@ -370,7 +379,7 @@ void QmlInspectorAdapter::onSelectActionTriggered(bool checked)
     }
 }
 
-void QmlInspectorAdapter::onZoomActionTriggered(bool checked)
+void QmlInspectorAdapter::onZoomActionTriggered(const bool checked)
 {
     QTC_ASSERT(toolsClient(), return);
     if (checked) {
@@ -382,20 +391,19 @@ void QmlInspectorAdapter::onZoomActionTriggered(bool checked)
     }
 }
 
-void QmlInspectorAdapter::onShowAppOnTopChanged(const QVariant &value)
+void QmlInspectorAdapter::onShowAppOnTopChanged(const bool checked)
 {
-    bool showAppOnTop = value.toBool();
-    if (m_toolsClient && m_toolsClient->status() == QmlDebug::Enabled)
-        m_toolsClient->showAppOnTop(showAppOnTop);
+    QTC_ASSERT(toolsClient(), return);
+    toolsClient()->showAppOnTop(checked);
 }
 
-void QmlInspectorAdapter::onUpdateOnSaveChanged(const QVariant &value)
+void QmlInspectorAdapter::onUpdateOnSaveChanged(const bool checked)
 {
-    bool updateOnSave = value.toBool();
+    QTC_ASSERT(toolsClient(), return);
     for (QHash<QString, QmlLiveTextPreview *>::const_iterator it
          = m_textPreviews.constBegin();
          it != m_textPreviews.constEnd(); ++it) {
-        it.value()->setApplyChangesToQmlInspector(updateOnSave);
+        it.value()->setApplyChangesToQmlInspector(checked);
     }
 }
 
@@ -499,6 +507,19 @@ void QmlInspectorAdapter::deletePreviews()
         delete m_textPreviews.take(key);
 }
 
+void QmlInspectorAdapter::enableTools(const bool enable)
+{
+    if (!m_toolsClientConnected)
+        return;
+    m_selectAction->setEnabled(enable);
+    m_showAppOnTopAction->setEnabled(enable);
+    m_updateOnSaveAction->setEnabled(enable);
+    // only enable zoom action for Qt 4.x/old client
+    // (zooming is integrated into selection tool in Qt 5).
+    if (!qobject_cast<QmlToolsClient*>(m_toolsClient))
+        m_zoomAction->setEnabled(enable);
+}
+
 void QmlInspectorAdapter::onReload()
 {
     QHash<QString, QByteArray> changesHash;
@@ -540,5 +561,10 @@ void QmlInspectorAdapter::onDestroyedObject(int objectDebugId)
     m_agent->fetchObject(m_agent->parentIdForObject(objectDebugId));
 }
 
+void QmlInspectorAdapter::onEngineStateChanged(const DebuggerState state)
+{
+    enableTools(state == InferiorRunOk);
+}
+
 } // namespace Internal
 } // namespace Debugger
diff --git a/src/plugins/debugger/qml/qmlinspectoradapter.h b/src/plugins/debugger/qml/qmlinspectoradapter.h
index e6c5d4d19547975b8fcfc62e9923c0db47ccc0f0..e9d9cd7866ed81e77bbb581b4cd27e94d8a410bb 100644
--- a/src/plugins/debugger/qml/qmlinspectoradapter.h
+++ b/src/plugins/debugger/qml/qmlinspectoradapter.h
@@ -30,6 +30,8 @@
 #ifndef QMLINSPECTORADAPTER_H
 #define QMLINSPECTORADAPTER_H
 
+#include "debuggerconstants.h"
+
 #include <QObject>
 #include <QStringList>
 
@@ -49,11 +51,13 @@ class FileReference;
 }
 
 namespace Debugger {
+
+class DebuggerEngine;
+
 namespace Internal {
 
 class WatchTreeView;
 class QmlAdapter;
-class QmlEngine;
 class QmlInspectorAgent;
 class QmlLiveTextPreview;
 
@@ -62,7 +66,7 @@ class QmlInspectorAdapter : public QObject
     Q_OBJECT
 
 public:
-    QmlInspectorAdapter(QmlAdapter *debugAdapter, QmlEngine *engine,
+    QmlInspectorAdapter(QmlAdapter *debugAdapter, DebuggerEngine *engine,
                         QObject *parent = 0);
     ~QmlInspectorAdapter();
 
@@ -78,6 +82,8 @@ signals:
     void selectionChanged();
 
 private slots:
+    void onEngineStateChanged(const Debugger::DebuggerState);
+
     void clientStatusChanged(QmlDebug::ClientStatus status);
     void toolsClientStatusChanged(QmlDebug::ClientStatus status);
     void engineClientStatusChanged(QmlDebug::ClientStatus status);
@@ -89,10 +95,10 @@ private slots:
     void removePreviewForEditor(Core::IEditor *editor);
     void updatePendingPreviewDocuments(QmlJS::Document::Ptr doc);
 
-    void onSelectActionTriggered(bool checked);
-    void onZoomActionTriggered(bool checked);
-    void onShowAppOnTopChanged(const QVariant &value);
-    void onUpdateOnSaveChanged(const QVariant &value);
+    void onSelectActionTriggered(const bool checked);
+    void onZoomActionTriggered(const bool checked);
+    void onShowAppOnTopChanged(const bool checked);
+    void onUpdateOnSaveChanged(const bool checked);
     void onReload();
     void onReloaded();
     void onDestroyedObject(int);
@@ -110,9 +116,10 @@ private:
             SelectionTarget target);
     void deletePreviews();
 
+    void enableTools(const bool enable);
 
     QmlAdapter *m_debugAdapter;
-    QmlEngine *m_engine;
+    DebuggerEngine *m_engine; // Master Engine
     QmlDebug::BaseEngineDebugClient *m_engineClient;
     QHash<QString, QmlDebug::BaseEngineDebugClient*> m_engineClients;
     QmlDebug::BaseToolsClient *m_toolsClient;
@@ -135,6 +142,8 @@ private:
     Core::Context m_inspectorToolsContext;
     QAction *m_selectAction;
     QAction *m_zoomAction;
+    QAction *m_showAppOnTopAction;
+    QAction *m_updateOnSaveAction;
 
     bool m_engineClientConnected;
 };