diff --git a/src/plugins/qmljsinspector/qmljsinspectorplugin.cpp b/src/plugins/qmljsinspector/qmljsinspectorplugin.cpp index 2c0c215c5cd..6a3c8d20c98 100644 --- a/src/plugins/qmljsinspector/qmljsinspectorplugin.cpp +++ b/src/plugins/qmljsinspector/qmljsinspectorplugin.cpp @@ -45,6 +45,9 @@ #include #include #include +#include + +#include #include #include @@ -114,7 +117,9 @@ void InspectorPlugin::extensionsInitialized() connect(pluginManager, SIGNAL(objectAdded(QObject*)), SLOT(objectAdded(QObject*))); connect(pluginManager, SIGNAL(aboutToRemoveObject(QObject*)), SLOT(aboutToRemoveObject(QObject*))); - m_inspectorUi->setupUi(); + Core::ICore *core = Core::ICore::instance(); + connect(core->modeManager(), SIGNAL(currentModeAboutToChange(Core::IMode*)), + this, SLOT(modeAboutToChange(Core::IMode*))); } void InspectorPlugin::objectAdded(QObject *object) @@ -155,4 +160,18 @@ void InspectorPlugin::clientProxyConnected() m_inspectorUi->connected(m_clientProxy); } +void InspectorPlugin::modeAboutToChange(Core::IMode *newMode) +{ + QTC_ASSERT(newMode, return); + + if (newMode->id() == Debugger::Constants::MODE_DEBUG) { + m_inspectorUi->setupUi(); + + // make sure we're not called again + Core::ICore *core = Core::ICore::instance(); + disconnect(core->modeManager(), SIGNAL(currentModeAboutToChange(Core::IMode*)), + this, SLOT(modeAboutToChange(Core::IMode*))); + } +} + Q_EXPORT_PLUGIN(InspectorPlugin) diff --git a/src/plugins/qmljsinspector/qmljsinspectorplugin.h b/src/plugins/qmljsinspector/qmljsinspectorplugin.h index f0f9500fb74..8202f36f699 100644 --- a/src/plugins/qmljsinspector/qmljsinspectorplugin.h +++ b/src/plugins/qmljsinspector/qmljsinspectorplugin.h @@ -75,6 +75,7 @@ private slots: void objectAdded(QObject *object); void aboutToRemoveObject(QObject *obj); void clientProxyConnected(); + void modeAboutToChange(Core::IMode *mode); private: void createActions();