summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordt <qtc-committer@nokia.com>2009-02-04 16:55:01 +0100
committerdt <qtc-committer@nokia.com>2009-02-04 16:55:01 +0100
commiteab0ff8f6e48b08fbad80b879126efbcbfa393d5 (patch)
treec03b15affe30d3cdfde2ce7c1851cdc716ef2e92
parent4acbcc760619333dca9c10e4ece1cc3052248b22 (diff)
downloadqt-creator-eab0ff8f6e48b08fbad80b879126efbcbfa393d5.tar.gz
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.
-rw-r--r--src/plugins/qt4projectmanager/qtversionmanager.cpp17
-rw-r--r--src/plugins/qt4projectmanager/qtversionmanager.h2
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<QtVersion *> versions, int defaultVersion)
: QWidget(parent)
- , m_versions(versions)
, m_defaultVersion(defaultVersion)
, m_specifyNameString(tr("<specify a name>"))
, m_specifyPathString(tr("<specify a path>"))
{
+ // 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<QtVersion *> 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<QtVersion *> versions, int defaultVersion);
+ ~QtDirWidget();
QList<QtVersion *> versions() const;
int defaultVersion() const;
void finish();