Crash on removing RunConfigurations by editing the pro file

Task: 250759
This commit is contained in:
dt
2009-04-15 14:52:31 +02:00
parent e39d006ffb
commit 1e0561e8e5
4 changed files with 30 additions and 5 deletions

View File

@@ -453,6 +453,7 @@ void Project::addRunConfiguration(QSharedPointer<RunConfiguration> runConfigurat
return; return;
} }
m_runConfigurations.push_back(runConfiguration); m_runConfigurations.push_back(runConfiguration);
emit addedRunConfiguration(runConfiguration->name());
} }
void Project::removeRunConfiguration(QSharedPointer<RunConfiguration> runConfiguration) void Project::removeRunConfiguration(QSharedPointer<RunConfiguration> runConfiguration)
@@ -460,14 +461,19 @@ void Project::removeRunConfiguration(QSharedPointer<RunConfiguration> runConfigu
if(!m_runConfigurations.contains(runConfiguration)) { if(!m_runConfigurations.contains(runConfiguration)) {
qWarning()<<"Not removing runConfiguration"<<runConfiguration->name()<<"becasue it doesn't exist"; qWarning()<<"Not removing runConfiguration"<<runConfiguration->name()<<"becasue it doesn't exist";
return; return;
} }
m_runConfigurations.removeOne(runConfiguration);
if (m_activeRunConfiguration == runConfiguration) { if (m_activeRunConfiguration == runConfiguration) {
if (m_runConfigurations.isEmpty()) if (m_runConfigurations.size() <= 1)
setActiveRunConfiguration(QSharedPointer<RunConfiguration>(0)); setActiveRunConfiguration(QSharedPointer<RunConfiguration>(0));
else if (m_runConfigurations.at(0) == m_activeRunConfiguration)
setActiveRunConfiguration(m_runConfigurations.at(1));
else else
setActiveRunConfiguration(m_runConfigurations.at(0)); setActiveRunConfiguration(m_runConfigurations.at(0));
} }
m_runConfigurations.removeOne(runConfiguration);
emit removedRunConfiguration(runConfiguration->name());
} }
QSharedPointer<RunConfiguration> Project::activeRunConfiguration() const QSharedPointer<RunConfiguration> Project::activeRunConfiguration() const

View File

@@ -140,6 +140,8 @@ signals:
void fileListChanged(); void fileListChanged();
void activeBuildConfigurationChanged(); void activeBuildConfigurationChanged();
void activeRunConfigurationChanged(); void activeRunConfigurationChanged();
void removedRunConfiguration(const QString &name);
void addedRunConfiguration(const QString &name);
// This signal is jut there for updating the tree list in the buildsettings wizard // This signal is jut there for updating the tree list in the buildsettings wizard
void buildConfigurationDisplayNameChanged(const QString &buildConfiguraiton); void buildConfigurationDisplayNameChanged(const QString &buildConfiguraiton);

View File

@@ -189,6 +189,15 @@ RunSettingsWidget::RunSettingsWidget(Project *project)
connect(m_ui->removeToolButton, SIGNAL(clicked(bool)), connect(m_ui->removeToolButton, SIGNAL(clicked(bool)),
this, SLOT(removeRunConfiguration())); this, SLOT(removeRunConfiguration()));
connect(m_project, SIGNAL(removedRunConfiguration(QString)),
this, SLOT(initRunConfigurationComboBox()));
connect(m_project, SIGNAL(addedRunConfiguration(QString)),
this, SLOT(initRunConfigurationComboBox()));
connect(m_project, SIGNAL(activeRunConfigurationChanged()),
this, SLOT(activeRunConfigurationChanged()));
initRunConfigurationComboBox(); initRunConfigurationComboBox();
const QList<QSharedPointer<RunConfiguration> > runConfigurations = m_project->runConfigurations(); const QList<QSharedPointer<RunConfiguration> > runConfigurations = m_project->runConfigurations();
for (int i=0; i<runConfigurations.size(); ++i) { for (int i=0; i<runConfigurations.size(); ++i) {
@@ -285,6 +294,14 @@ void RunSettingsWidget::activateRunConfiguration(int index)
m_ui->groupBox->layout()->addWidget(m_runConfigurationWidget); m_ui->groupBox->layout()->addWidget(m_runConfigurationWidget);
} }
void RunSettingsWidget::activeRunConfigurationChanged()
{
QSharedPointer<RunConfiguration> active = m_project->activeRunConfiguration();
delete m_runConfigurationWidget;
m_runConfigurationWidget = active->configurationWidget();
m_ui->groupBox->layout()->addWidget(m_runConfigurationWidget);
}
void RunSettingsWidget::nameChanged() void RunSettingsWidget::nameChanged()
{ {
RunConfiguration *rc = qobject_cast<RunConfiguration *>(sender()); RunConfiguration *rc = qobject_cast<RunConfiguration *>(sender());

View File

@@ -77,9 +77,9 @@ private slots:
void addRunConfiguration(); void addRunConfiguration();
void removeRunConfiguration(); void removeRunConfiguration();
void nameChanged(); void nameChanged();
private:
void initRunConfigurationComboBox(); void initRunConfigurationComboBox();
void activeRunConfigurationChanged();
private:
Project *m_project; Project *m_project;
RunConfigurationsModel *m_runConfigurationsModel; RunConfigurationsModel *m_runConfigurationsModel;
Ui::RunSettingsPropertiesPage *m_ui; Ui::RunSettingsPropertiesPage *m_ui;