void ModeManager::currentTabChanged(int index) { // Tab index changes to -1 when there is no tab left. if (index >= 0) { IMode *mode = d->m_modes.at(index); // FIXME: This hardcoded context update is required for the Debug and Edit modes, since // they use the editor widget, which is already a context widget so the main window won't // go further up the parent tree to find the mode context. ICore::updateAdditionalContexts(d->m_addedContexts, mode->context()); d->m_addedContexts = mode->context(); IMode *oldMode = 0; if (d->m_oldCurrent >= 0) oldMode = d->m_modes.at(d->m_oldCurrent); d->m_oldCurrent = index; emit currentModeChanged(mode ? mode->id() : Id(), oldMode ? oldMode->id() : Id()); } }
void ModeManager::currentTabChanged(int index) { // qDebug() << "Current tab changed " << index; // Tab index changes to -1 when there is no tab left. if (index >= 0) { IMode *mode = m_modes.at(index); // FIXME: This hardcoded context update is required for the Debug and Edit modes, since // they use the editor widget, which is already a context widget so the main window won't // go further up the parent tree to find the mode context. ICore *core = ICore::instance(); foreach (const int context, m_addedContexts) core->removeAdditionalContext(context); m_addedContexts = mode->context(); foreach (const int context, m_addedContexts) core->addAdditionalContext(context); emit currentModeChanged(mode); core->updateContext(); }