Stop navigationwidget from going haywire

Stop navigationwidget from going haywire when faced with old
configuration data. This issue could lead to different effects:
 * A crash
 * Creator not being able to exit anymore
 * The sidebar being messed up

Task-number: QTCREATORBUG-2780
Reviewed-by: con
This commit is contained in:
Tobias Hunger
2010-10-21 11:54:11 +02:00
parent 24a76a73a9
commit 7b043ba1d7

View File

@@ -165,7 +165,6 @@ NavigationWidget::NavigationWidget(QAction *toggleSideBarAction) :
{
d->m_factoryModel->setSortRole(FactoryPriorityRole);
setOrientation(Qt::Vertical);
insertSubItem(0, -1); // we don't have any entry to show yet
d->m_instance = this;
}
@@ -327,17 +326,22 @@ void NavigationWidget::restoreSettings(QSettings *settings)
settings->setValue("Navigation/Version", 2);
}
for (int i=0; i<viewIds.count(); ++i) {
const QString &view = viewIds.at(i);
int index = factoryIndex(view);
if (i >= d->m_subWidgets.size()) {
insertSubItem(i, index);
int position = 0;
foreach (const QString &id, viewIds) {
int index = factoryIndex(id);
if (index >= 0) {
// Only add if the id was actually found!
insertSubItem(position, index);
++position;
} else {
d->m_subWidgets.at(i)->setFactoryIndex(index);
restoreSplitterState = false;
}
}
if (d->m_subWidgets.isEmpty())
// Make sure we have at least the projects widget
insertSubItem(0, qMax(0, factoryIndex(QLatin1String("Projects"))));
if (settings->contains("Navigation/Visible")) {
setShown(settings->value("Navigation/Visible").toBool());
} else {