forked from qt-creator/qt-creator
Crash on removing RunConfigurations by editing the pro file
Task: 250759
This commit is contained in:
@@ -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
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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());
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user