From ad9b6e4ea63cbaf59fcdf08de249a091ce0e4cc5 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Mon, 12 Apr 2010 12:43:17 +0200 Subject: [PATCH] Switch away from modes that become deactivated Make sure any mode that gets disabled is no longer displayed. Task-number: QTCREATORBUG-1107 Reviewed-by: con --- src/plugins/coreplugin/modemanager.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 84fdc98bcd9..ff0ce2c1571 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -218,6 +218,18 @@ void ModeManager::enabledStateChanged() int index = d->m_modes.indexOf(mode); QTC_ASSERT(index >= 0, return); d->m_modeStack->setTabEnabled(index, mode->isEnabled()); + + // Make sure we leave any disabled mode to prevent possible crashes: + if (mode == currentMode() && !mode->isEnabled()) { + // This assumes that there is always at least one enabled mode. + for (int i = 0; i < d->m_modes.count(); ++i) { + if (d->m_modes.at(i) != mode && + d->m_modes.at(i)->isEnabled()) { + activateMode(d->m_modes.at(i)->id()); + break; + } + } + } } void ModeManager::aboutToRemoveObject(QObject *obj) -- GitLab