summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/debugger/debuggerplugin.cpp5
-rw-r--r--src/plugins/debugger/debuggerplugin.h1
-rw-r--r--src/plugins/debugger/debuggerrunner.cpp11
-rw-r--r--src/plugins/debugger/debuggeruiswitcher.cpp30
-rw-r--r--src/plugins/debugger/debuggeruiswitcher.h1
5 files changed, 31 insertions, 17 deletions
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index a1b4c743fc..6b27f0a540 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -2766,6 +2766,11 @@ bool DebuggerPlugin::isRegisterViewVisible() const
return d->m_registerDock->toggleViewAction()->isChecked();
}
+bool DebuggerPlugin::hasSnapsnots() const
+{
+ return d->m_snapshotHandler->size();
+}
+
static inline bool canShutDown(DebuggerState s)
{
switch (s) {
diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h
index 80bb7396a9..4a226ed4b0 100644
--- a/src/plugins/debugger/debuggerplugin.h
+++ b/src/plugins/debugger/debuggerplugin.h
@@ -87,6 +87,7 @@ public:
const CPlusPlus::Snapshot &cppCodeModelSnapshot() const;
bool isRegisterViewVisible() const;
+ bool hasSnapsnots() const;
void openTextEditor(const QString &titlePattern, const QString &contents);
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 341fbbd8c5..9238fdb34a 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -151,7 +151,8 @@ static DebuggerStartParameters localStartParameters(RunConfiguration *runConfigu
sp.dumperLibrary = rc->dumperLibrary();
sp.dumperLibraryLocations = rc->dumperLibraryLocations();
- if (DebuggerRunControl::isQmlProject(runConfiguration)) {
+ DebuggerLanguages activeLangs = DebuggerUISwitcher::instance()->activeDebugLanguages();
+ if (activeLangs & QmlLanguage) {
sp.qmlServerAddress = QLatin1String("127.0.0.1");
sp.qmlServerPort = rc->environment().value("QML_DEBUG_SERVER_PORT").toUInt();
if (sp.qmlServerPort == 0)
@@ -380,7 +381,7 @@ void DebuggerRunControl::createEngine(const DebuggerStartParameters &startParams
if (!engineType)
engineType = engineForMode(sp.startMode);
- if (engineType != QmlEngineType && sp.m_isQmlProject && (activeLangs & QmlLanguage)) {
+ if (engineType != QmlEngineType && (activeLangs & QmlLanguage)) {
if (activeLangs & CppLanguage) {
sp.cppEngineType = engineType;
engineType = QmlCppEngineType;
@@ -497,14 +498,16 @@ void DebuggerRunControl::start()
return;
}
- plugin()->activateDebugMode();
+ DebuggerUISwitcher::instance()->aboutToStartDebugger();
const QString message = tr("Starting debugger '%1' for tool chain '%2'...").
arg(m_engine->objectName(), toolChainName(sp.toolChainType));
plugin()->showMessage(message, StatusBar);
plugin()->showMessage(DebuggerSettings::instance()->dump(), LogDebug);
-
plugin()->runControlStarted(this);
+
+ plugin()->activateDebugMode();
+
engine()->startDebugger(this);
m_running = true;
emit started();
diff --git a/src/plugins/debugger/debuggeruiswitcher.cpp b/src/plugins/debugger/debuggeruiswitcher.cpp
index 1af6d1be83..6e5882a93f 100644
--- a/src/plugins/debugger/debuggeruiswitcher.cpp
+++ b/src/plugins/debugger/debuggeruiswitcher.cpp
@@ -32,6 +32,7 @@
#include "debuggeractions.h"
#include "debuggerconstants.h"
#include "debuggerrunner.h"
+#include "debuggerplugin.h"
#include "savedaction.h"
#include <utils/savedaction.h>
@@ -305,23 +306,20 @@ void DebuggerUISwitcher::modeChanged(Core::IMode *mode)
d->m_mainWindow->setDockActionsVisible(d->m_inDebugMode);
hideInactiveWidgets();
- if (mode->id() != Constants::MODE_DEBUG)
+ if (mode->id() != Constants::MODE_DEBUG || DebuggerPlugin::instance()->hasSnapsnots())
return;
- Core::EditorManager *editorManager = Core::EditorManager::instance();
- if (editorManager->currentEditor()) {
- DebuggerLanguages activeLangs;
- if (isCurrentProjectCppBased())
- activeLangs |= CppLanguage;
+ DebuggerLanguages activeLangs;
+ if (isCurrentProjectCppBased())
+ activeLangs |= CppLanguage;
- if (isCurrentProjectQmlCppBased())
- activeLangs |= QmlLanguage;
+ if (isCurrentProjectQmlCppBased())
+ activeLangs |= QmlLanguage;
- if (d->m_activateCppAction)
- d->m_activateCppAction->setChecked(activeLangs & CppLanguage);
- if (d->m_activateQmlAction)
- d->m_activateQmlAction->setChecked(activeLangs & QmlLanguage);
- }
+ if (d->m_activateCppAction)
+ d->m_activateCppAction->setChecked(activeLangs & CppLanguage);
+ if (d->m_activateQmlAction)
+ d->m_activateQmlAction->setChecked(activeLangs & QmlLanguage);
updateActiveLanguages();
}
@@ -634,6 +632,12 @@ QWidget *DebuggerUISwitcher::createContents(Core::BaseMode *mode)
return splitter;
}
+void DebuggerUISwitcher::aboutToStartDebugger()
+{
+ if (!DebuggerPlugin::instance()->hasSnapsnots())
+ updateActiveLanguages();
+}
+
void DebuggerUISwitcher::aboutToShutdown()
{
writeSettings();
diff --git a/src/plugins/debugger/debuggeruiswitcher.h b/src/plugins/debugger/debuggeruiswitcher.h
index 97ebd9f712..bb69ab0df7 100644
--- a/src/plugins/debugger/debuggeruiswitcher.h
+++ b/src/plugins/debugger/debuggeruiswitcher.h
@@ -94,6 +94,7 @@ public:
// called when all dependent plugins have loaded
void initialize();
+ void aboutToStartDebugger();
void aboutToShutdown();
// most common debugger windows