From 95fac2b09603fb32109894a7379e39599050550c Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Mon, 13 Jul 2009 13:47:46 +0200 Subject: [PATCH] Fix crash when pressing '+' twice in Qt version settings. Bug was introduced when separating the version list into "Autodetected" and "Manual" subtrees. --- .../qt4projectmanager/qtoptionspage.cpp | 19 +++++++++++++++++-- src/plugins/qt4projectmanager/qtoptionspage.h | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index 34d57883f66..6c5c4c4a9cc 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -370,6 +370,21 @@ int QtOptionsPageWidget::indexForTreeItem(QTreeWidgetItem *item) const return -1; } +QTreeWidgetItem *QtOptionsPageWidget::treeItemForIndex(int index) const +{ + int uniqueId = m_versions.at(index)->uniqueId(); + for (int i = 0; i < m_ui->qtdirList->topLevelItemCount(); ++i) { + QTreeWidgetItem *toplevelItem = m_ui->qtdirList->topLevelItem(i); + for (int j = 0; j < toplevelItem->childCount(); ++j) { + QTreeWidgetItem *item = toplevelItem->child(j); + if (item->data(0, Qt::UserRole).toInt() == uniqueId) { + return item; + } + } + } + return 0; +} + void QtOptionsPageWidget::versionChanged(QTreeWidgetItem *item, QTreeWidgetItem *old) { if (old) { @@ -454,11 +469,11 @@ void QtOptionsPageWidget::fixQtVersionName(int index) if (index < 0) return; int count = m_versions.count(); + QString name = m_versions.at(index)->name(); for (int i = 0; i < count; ++i) { if (i != index) { if (m_versions.at(i)->name() == m_versions.at(index)->name()) { // Same name, find new name - QString name = m_versions.at(index)->name(); QRegExp regexp("^(.*)\\((\\d)\\)$"); if (regexp.exactMatch(name)) { // Alreay in Name (#) format @@ -468,7 +483,7 @@ void QtOptionsPageWidget::fixQtVersionName(int index) } // set new name m_versions[index]->setName(name); - m_ui->qtdirList->topLevelItem(index)->setText(0, name); + treeItemForIndex(index)->setText(0, name); m_ui->defaultCombo->setItemText(index, name); // Now check again... diff --git a/src/plugins/qt4projectmanager/qtoptionspage.h b/src/plugins/qt4projectmanager/qtoptionspage.h index a78b80460e0..57275795fe6 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.h +++ b/src/plugins/qt4projectmanager/qtoptionspage.h @@ -61,6 +61,7 @@ private: void fixQtVersionName(int index); int indexForWidget(QWidget *debuggingHelperWidget) const; int indexForTreeItem(QTreeWidgetItem *item) const; + QTreeWidgetItem *treeItemForIndex(int index) const; Internal::Ui::QtVersionManager *m_ui; QList<QtVersion *> m_versions; -- GitLab