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
This commit is contained in:
Tobias Hunger
2010-04-12 12:43:17 +02:00
parent af1b31d3da
commit ad9b6e4ea6

View File

@@ -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)