From eab0ff8f6e48b08fbad80b879126efbcbfa393d5 Mon Sep 17 00:00:00 2001 From: dt Date: Wed, 4 Feb 2009 16:55:01 +0100 Subject: Fixes: Crash after deleting a qt version and pressing cancel. Details: That hasn't worked in the last few months, since we changed the QtVersion class from being passed by value to being passed around by reference. --- src/plugins/qt4projectmanager/qtversionmanager.cpp | 17 +++++++++++++++-- src/plugins/qt4projectmanager/qtversionmanager.h | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index 6e67989158..4415a73209 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -177,7 +177,10 @@ void QtVersionManager::apply() } } } - m_versions = m_widget->versions(); + qDeleteAll(m_versions); + m_versions.clear(); + foreach(QtVersion *version, m_widget->versions()) + m_versions.append(new QtVersion(*version)); if (versionPathsChanged) updateDocumentation(); updateUniqueIdToIndexMap(); @@ -361,11 +364,16 @@ QtVersion *QtVersionManager::currentQtVersion() const QtDirWidget::QtDirWidget(QWidget *parent, QList versions, int defaultVersion) : QWidget(parent) - , m_versions(versions) , m_defaultVersion(defaultVersion) , m_specifyNameString(tr("")) , m_specifyPathString(tr("")) { + // Initialize m_versions + foreach(QtVersion *version, versions) { + m_versions.append(new QtVersion(*version)); + } + + m_ui.setupUi(this); m_ui.qtPath->setExpectedKind(Core::Utils::PathChooser::Directory); m_ui.qtPath->setPromptDialogTitle(tr("Select QTDIR")); @@ -417,6 +425,11 @@ QtDirWidget::QtDirWidget(QWidget *parent, QList versions, int defau updateState(); } +QtDirWidget::~QtDirWidget() +{ + qDeleteAll(m_versions); +} + void QtDirWidget::addQtDir() { QtVersion *newVersion = new QtVersion(m_specifyNameString, m_specifyPathString); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index f6ccd017b6..11e5ec8235 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -122,7 +122,6 @@ private: // This is updated on first call to qmakeCommand // That function is called from updateVersionInfo() mutable QString m_qtVersionString; - Q_DISABLE_COPY(QtVersion); }; @@ -131,6 +130,7 @@ class QtDirWidget : public QWidget Q_OBJECT public: QtDirWidget(QWidget *parent, QList versions, int defaultVersion); + ~QtDirWidget(); QList versions() const; int defaultVersion() const; void finish(); -- cgit v1.2.3