forked from qt-creator/qt-creator
fixed a crash with sidebar when using old settings files
If the user uses old QtC settings files (QtCreator.ini), sidebar item names are there translated. Because the new settings uses id's instead of translated names, old sidebar items will not exist on save, causing crashes. this fixes that issue. Reviewed-by: con
This commit is contained in:
@@ -218,11 +218,19 @@ void SideBar::saveSettings(QSettings *settings, const QString &name)
|
||||
const QString prefix = name.isEmpty() ? name : (name + QLatin1Char('/'));
|
||||
|
||||
QStringList views;
|
||||
for (int i = 0; i < m_widgets.count(); ++i)
|
||||
views.append(m_widgets.at(i)->currentItemId());
|
||||
for (int i = 0; i < m_widgets.count(); ++i) {
|
||||
QString currentItemId = m_widgets.at(i)->currentItemId();
|
||||
if (!currentItemId.isEmpty())
|
||||
views.append(currentItemId);
|
||||
}
|
||||
if (views.isEmpty() && m_itemMap.size()) {
|
||||
QMapIterator<QString, QWeakPointer<SideBarItem> > iter(m_itemMap);
|
||||
iter.next();
|
||||
views.append(iter.key());
|
||||
}
|
||||
|
||||
settings->setValue(prefix + "Views", views);
|
||||
settings->setValue(prefix + "Visible", true);//isVisible());
|
||||
settings->setValue(prefix + "Visible", true);
|
||||
settings->setValue(prefix + "VerticalPosition", saveState());
|
||||
settings->setValue(prefix + "Width", width());
|
||||
}
|
||||
@@ -244,6 +252,7 @@ void SideBar::readSettings(QSettings *settings, const QString &name)
|
||||
if (views.count()) {
|
||||
foreach (const QString &id, views)
|
||||
insertSideBarWidget(m_widgets.count(), id);
|
||||
|
||||
} else {
|
||||
insertSideBarWidget(0);
|
||||
}
|
||||
@@ -365,7 +374,9 @@ QString SideBarWidget::currentItemTitle() const
|
||||
|
||||
QString SideBarWidget::currentItemId() const
|
||||
{
|
||||
return m_currentItem->id();
|
||||
if (m_currentItem)
|
||||
return m_currentItem->id();
|
||||
return QString();
|
||||
}
|
||||
|
||||
void SideBarWidget::setCurrentItem(const QString &id)
|
||||
|
||||
Reference in New Issue
Block a user