Debugger: Automatically adapt to the languages the running engine supports

We used to get the layout only from the current/last run configuration. However,
this fails for engines started by other means (Debug->Start Debugging submenu).

Change-Id: I87e12457c7cd68a326ac1827298a3542e149199b
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Kai Koehne
2011-10-12 16:30:14 +02:00
committed by hjk
parent b0a20e1220
commit f5ec093e3b
3 changed files with 23 additions and 5 deletions

View File

@@ -134,6 +134,7 @@ public:
DebuggerLanguages m_previousDebugLanguages;
DebuggerLanguages m_activeDebugLanguages;
DebuggerLanguages m_engineDebugLanguages;
ActionContainer *m_viewsMenu;
@@ -151,6 +152,7 @@ DebuggerMainWindowPrivate::DebuggerMainWindowPrivate(DebuggerMainWindow *mw)
, m_changingUI(false)
, m_previousDebugLanguages(AnyLanguage)
, m_activeDebugLanguages(AnyLanguage)
, m_engineDebugLanguages(AnyLanguage)
, m_viewsMenu(0)
{
createViewsMenuItems();
@@ -222,11 +224,15 @@ void DebuggerMainWindowPrivate::updateActiveLanguages()
{
DebuggerLanguages newLanguages = AnyLanguage;
if (m_previousRunConfiguration) {
if (m_previousRunConfiguration.data()->useCppDebugger())
newLanguages = CppLanguage;
if (m_previousRunConfiguration.data()->useQmlDebugger())
newLanguages |= QmlLanguage;
if (m_engineDebugLanguages != AnyLanguage)
newLanguages = m_engineDebugLanguages;
else {
if (m_previousRunConfiguration) {
if (m_previousRunConfiguration.data()->useCppDebugger())
newLanguages |= CppLanguage;
if (m_previousRunConfiguration.data()->useQmlDebugger())
newLanguages |= QmlLanguage;
}
}
if (newLanguages != m_activeDebugLanguages) {
@@ -269,6 +275,15 @@ DebuggerLanguages DebuggerMainWindow::activeDebugLanguages() const
return d->m_activeDebugLanguages;
}
void DebuggerMainWindow::setEngineDebugLanguages(DebuggerLanguages languages)
{
if (d->m_engineDebugLanguages == languages)
return;
d->m_engineDebugLanguages = languages;
d->updateActiveLanguages();
}
void DebuggerMainWindow::onModeChanged(IMode *mode)
{
d->m_inDebugMode = (mode && mode->id() == Constants::MODE_DEBUG);