diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index 943edacf0f4ca271de11c1f9da1740fd235fda5e..8183272bca5d20d5f8128703f748250bcf2736dd 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -71,13 +71,9 @@ QmlCppEngine::QmlCppEngine(const DebuggerStartParameters &sp) d->m_activeEngine = d->m_cppEngine; connect(d->m_cppEngine, SIGNAL(stateChanged(DebuggerState)), - SLOT(cppEngineStateChanged(DebuggerState))); + SLOT(slaveEngineStateChanged(DebuggerState))); connect(d->m_qmlEngine, SIGNAL(stateChanged(DebuggerState)), - SLOT(qmlEngineStateChanged(DebuggerState))); - - connect(Core::EditorManager::instance(), - SIGNAL(currentEditorChanged(Core::IEditor*)), - SLOT(editorChanged(Core::IEditor*))); + SLOT(slaveEngineStateChanged(DebuggerState))); } QmlCppEngine::~QmlCppEngine() @@ -86,39 +82,6 @@ QmlCppEngine::~QmlCppEngine() delete d->m_cppEngine; } -void QmlCppEngine::editorChanged(Core::IEditor *editor) -{ - // Change the engine based on editor, but only if we're not - // currently in stopped state. - if (state() != InferiorRunOk || !editor) - return; - - if (editor->id() == QmlJSEditor::Constants::C_QMLJSEDITOR_ID) - setActiveEngine(QmlLanguage); - else - setActiveEngine(CppLanguage); -} - -void QmlCppEngine::setActiveEngine(DebuggerLanguage language) -{ - DebuggerEngine *previousEngine = d->m_activeEngine; - bool updateEngine = false; - QString engineName; - - if (language == CppLanguage) { - engineName = QLatin1String("C++"); - d->m_activeEngine = d->m_cppEngine; - // don't update cpp engine - at least gdb will stop temporarily, - // which is not nice when you're just switching files. - } else if (language == QmlLanguage) { - engineName = QLatin1String("QML"); - d->m_activeEngine = d->m_qmlEngine; - updateEngine = true; - } - if (previousEngine != d->m_activeEngine) - showStatusMessage(tr("%1 debugger activated").arg(engineName)); -} - void QmlCppEngine::setToolTipExpression(const QPoint & mousePos, TextEditor::ITextEditor *editor, int cursorPos) { @@ -388,9 +351,6 @@ bool QmlCppEngine::checkErrorState(const DebuggerState stateToCheck) void QmlCppEngine::notifyInferiorRunOk() { DebuggerEngine::notifyInferiorRunOk(); - - Core::EditorManager *em = Core::EditorManager::instance(); - editorChanged(em->currentEditor()); } void QmlCppEngine::setupEngine() @@ -477,22 +437,16 @@ void QmlCppEngine::setupSlaveEngine() d->m_qmlEngine->startDebugger(runControl()); } -void QmlCppEngine::cppEngineStateChanged(const DebuggerState &newState) -{ - if (newState == InferiorStopOk) - setActiveEngine(CppLanguage); - engineStateChanged(newState); -} - -void QmlCppEngine::qmlEngineStateChanged(const DebuggerState &newState) +void QmlCppEngine::slaveEngineStateChanged(const DebuggerState newState) { - if (newState == InferiorStopOk) - setActiveEngine(QmlLanguage); - engineStateChanged(newState); -} + DebuggerEngine *slaveEngine = qobject_cast<DebuggerEngine *>(sender()); + if (newState == InferiorStopOk && slaveEngine != d->m_activeEngine) { + QString engineName = slaveEngine == d->m_cppEngine + ? QLatin1String("C++") : QLatin1String("QML"); + showStatusMessage(tr("%1 debugger activated").arg(engineName)); + d->m_activeEngine = d->m_qmlEngine; + } -void QmlCppEngine::engineStateChanged(const DebuggerState &newState) -{ switch (newState) { case InferiorRunOk: // startup? @@ -560,9 +514,6 @@ void QmlCppEngine::engineStateChanged(const DebuggerState &newState) break; case InferiorShutdownRequested: - if (d->m_activeEngine == d->m_qmlEngine) { - setActiveEngine(CppLanguage); - } break; case EngineShutdownRequested: diff --git a/src/plugins/debugger/qml/qmlcppengine.h b/src/plugins/debugger/qml/qmlcppengine.h index 3a18c583d3a4d8718c0d17fed028adc25e8e036c..f7aa33513e81d4626f38bf3226f548f4bcdc7865 100644 --- a/src/plugins/debugger/qml/qmlcppengine.h +++ b/src/plugins/debugger/qml/qmlcppengine.h @@ -5,10 +5,6 @@ #include <QtCore/QScopedPointer> -namespace Core { -class IEditor; -} - namespace Debugger { namespace Internal { @@ -17,12 +13,11 @@ class QmlCppEnginePrivate; class DEBUGGER_EXPORT QmlCppEngine : public DebuggerEngine { Q_OBJECT + public: explicit QmlCppEngine(const DebuggerStartParameters &sp); virtual ~QmlCppEngine(); - void setActiveEngine(DebuggerLanguage language); - virtual void setToolTipExpression(const QPoint &mousePos, TextEditor::ITextEditor * editor, int cursorPos); virtual void updateWatchData(const WatchData &data, @@ -94,15 +89,13 @@ protected: virtual void shutdownEngine(); private slots: - void cppEngineStateChanged(const DebuggerState &state); - void qmlEngineStateChanged(const DebuggerState &state); + void slaveEngineStateChanged(DebuggerState state); void setupSlaveEngine(); - void editorChanged(Core::IEditor *editor); private: void initEngineShutdown(); - bool checkErrorState(const DebuggerState stateToCheck); - void engineStateChanged(const DebuggerState &newState); + bool checkErrorState(DebuggerState stateToCheck); + void engineStateChanged(DebuggerState newState); private: QScopedPointer<QmlCppEnginePrivate> d;