forked from qt-creator/qt-creator
Fix crash when deleting targets
* Update signal names to be more in sync with those found on the QTabBar Reviewed-by: con
This commit is contained in:
@@ -49,6 +49,8 @@ void TargetSelector::insertTarget(int index, const QString &name)
|
|||||||
|
|
||||||
if (m_currentTargetIndex == -1)
|
if (m_currentTargetIndex == -1)
|
||||||
setCurrentIndex(index);
|
setCurrentIndex(index);
|
||||||
|
else if (m_currentTargetIndex >= index)
|
||||||
|
setCurrentIndex(m_currentTargetIndex + 1);
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,10 +68,13 @@ void TargetSelector::removeTarget(int index)
|
|||||||
QTC_ASSERT(index >= 0 && index < m_targets.count(), return);
|
QTC_ASSERT(index >= 0 && index < m_targets.count(), return);
|
||||||
|
|
||||||
m_targets.removeAt(index);
|
m_targets.removeAt(index);
|
||||||
if (m_currentTargetIndex > index)
|
|
||||||
setCurrentIndex(m_currentTargetIndex - 1);
|
if (m_currentTargetIndex >= m_targets.count())
|
||||||
if (m_currentTargetIndex == m_targets.count())
|
setCurrentIndex(m_targets.count() - 1);
|
||||||
setCurrentIndex(m_currentTargetIndex - 1);
|
else if (m_currentTargetIndex >= index)
|
||||||
|
// force a signal since the target pointed to has changed:
|
||||||
|
emit currentChanged(m_currentTargetIndex, m_targets.at(m_currentTargetIndex).currentSubIndex);
|
||||||
|
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +91,7 @@ void TargetSelector::setCurrentIndex(int index)
|
|||||||
m_currentTargetIndex = index;
|
m_currentTargetIndex = index;
|
||||||
|
|
||||||
update();
|
update();
|
||||||
emit currentIndexChanged(m_currentTargetIndex,
|
emit currentChanged(m_currentTargetIndex,
|
||||||
m_currentTargetIndex >= 0 ? m_targets.at(m_currentTargetIndex).currentSubIndex : -1);
|
m_currentTargetIndex >= 0 ? m_targets.at(m_currentTargetIndex).currentSubIndex : -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +115,7 @@ void TargetSelector::setCurrentSubIndex(int subindex)
|
|||||||
m_targets[m_currentTargetIndex].currentSubIndex = subindex;
|
m_targets[m_currentTargetIndex].currentSubIndex = subindex;
|
||||||
|
|
||||||
update();
|
update();
|
||||||
emit currentIndexChanged(m_currentTargetIndex,
|
emit currentChanged(m_currentTargetIndex,
|
||||||
m_targets.at(m_currentTargetIndex).currentSubIndex);
|
m_targets.at(m_currentTargetIndex).currentSubIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,7 +174,7 @@ void TargetSelector::mousePressEvent(QMouseEvent *event)
|
|||||||
m_currentTargetIndex = index;
|
m_currentTargetIndex = index;
|
||||||
//TODO don't emit if nothing changed!
|
//TODO don't emit if nothing changed!
|
||||||
update();
|
update();
|
||||||
emit currentIndexChanged(m_currentTargetIndex, m_targets.at(m_currentTargetIndex).currentSubIndex);
|
emit currentChanged(m_currentTargetIndex, m_targets.at(m_currentTargetIndex).currentSubIndex);
|
||||||
} else {
|
} else {
|
||||||
event->ignore();
|
event->ignore();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,9 @@ public slots:
|
|||||||
signals:
|
signals:
|
||||||
void addButtonClicked();
|
void addButtonClicked();
|
||||||
void removeButtonClicked();
|
void removeButtonClicked();
|
||||||
void currentIndexChanged(int targetIndex, int subIndex);
|
// This signal is emited whenever the target pointed to by the indices
|
||||||
|
// has changed.
|
||||||
|
void currentChanged(int targetIndex, int subIndex);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *event);
|
void paintEvent(QPaintEvent *event);
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ QIcon TargetSettingsPanel::icon() const
|
|||||||
///
|
///
|
||||||
|
|
||||||
TargetSettingsPanelWidget::TargetSettingsPanelWidget(Project *project) :
|
TargetSettingsPanelWidget::TargetSettingsPanelWidget(Project *project) :
|
||||||
m_currentIndex(-1),
|
m_currentTarget(0),
|
||||||
m_project(project),
|
m_project(project),
|
||||||
m_selector(0),
|
m_selector(0),
|
||||||
m_centralWidget(0)
|
m_centralWidget(0)
|
||||||
@@ -171,34 +171,34 @@ void TargetSettingsPanelWidget::setupUi()
|
|||||||
noTargetLayout->addStretch(10);
|
noTargetLayout->addStretch(10);
|
||||||
m_centralWidget->addWidget(m_noTargetLabel);
|
m_centralWidget->addWidget(m_noTargetLabel);
|
||||||
|
|
||||||
|
connect(m_selector, SIGNAL(currentChanged(int,int)),
|
||||||
|
this, SLOT(currentTargetChanged(int,int)));
|
||||||
|
|
||||||
foreach (Target *t, m_project->targets())
|
foreach (Target *t, m_project->targets())
|
||||||
targetAdded(t);
|
targetAdded(t);
|
||||||
m_selector->markActive(m_targets.indexOf(m_project->activeTarget()));
|
|
||||||
|
|
||||||
connect(m_selector, SIGNAL(currentIndexChanged(int,int)),
|
|
||||||
this, SLOT(currentTargetIndexChanged(int,int)));
|
|
||||||
connect(m_selector, SIGNAL(addButtonClicked()),
|
connect(m_selector, SIGNAL(addButtonClicked()),
|
||||||
this, SLOT(addTarget()));
|
this, SLOT(addTarget()));
|
||||||
connect(m_selector, SIGNAL(removeButtonClicked()),
|
connect(m_selector, SIGNAL(removeButtonClicked()),
|
||||||
this, SLOT(removeTarget()));
|
this, SLOT(removeTarget()));
|
||||||
|
|
||||||
if (m_project->targets().count())
|
if (m_project->activeTarget()) {
|
||||||
currentTargetIndexChanged(m_targets.indexOf(m_project->activeTarget()), 0);
|
m_selector->markActive(m_targets.indexOf(m_project->activeTarget()));
|
||||||
|
m_selector->setCurrentIndex(m_targets.indexOf(m_project->activeTarget()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TargetSettingsPanelWidget::currentTargetIndexChanged(int targetIndex, int subIndex)
|
void TargetSettingsPanelWidget::currentTargetChanged(int targetIndex, int subIndex)
|
||||||
{
|
{
|
||||||
if (targetIndex < -1 || targetIndex >= m_targets.count())
|
if (targetIndex < -1 || targetIndex >= m_targets.count())
|
||||||
return;
|
return;
|
||||||
if (subIndex < -1 || subIndex >= 2)
|
if (subIndex < -1 || subIndex >= 2)
|
||||||
return;
|
return;
|
||||||
m_selector->setCurrentIndex(targetIndex);
|
|
||||||
m_selector->setCurrentSubIndex(subIndex);
|
|
||||||
|
|
||||||
Target *target(m_targets.at(targetIndex));
|
Target *target(m_targets.at(targetIndex));
|
||||||
|
|
||||||
// Target was not actually changed:
|
// Target was not actually changed:
|
||||||
if (m_currentIndex == targetIndex) {
|
if (m_currentTarget == target) {
|
||||||
if (m_panelWidgets[subIndex])
|
if (m_panelWidgets[subIndex])
|
||||||
m_centralWidget->setCurrentWidget(m_panelWidgets[subIndex]);
|
m_centralWidget->setCurrentWidget(m_panelWidgets[subIndex]);
|
||||||
else
|
else
|
||||||
@@ -206,7 +206,7 @@ void TargetSettingsPanelWidget::currentTargetIndexChanged(int targetIndex, int s
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_currentIndex = targetIndex;
|
m_currentTarget = target;
|
||||||
|
|
||||||
// Target has changed:
|
// Target has changed:
|
||||||
if (targetIndex == -1) { // no more targets!
|
if (targetIndex == -1) { // no more targets!
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ public:
|
|||||||
void setupUi();
|
void setupUi();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void currentTargetIndexChanged(int targetIndex, int subIndex);
|
void currentTargetChanged(int targetIndex, int subIndex);
|
||||||
void addTarget();
|
void addTarget();
|
||||||
void removeTarget();
|
void removeTarget();
|
||||||
void targetAdded(ProjectExplorer::Target *target);
|
void targetAdded(ProjectExplorer::Target *target);
|
||||||
@@ -91,7 +91,7 @@ private slots:
|
|||||||
void activeTargetChanged(ProjectExplorer::Target *target);
|
void activeTargetChanged(ProjectExplorer::Target *target);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_currentIndex;
|
Target *m_currentTarget;
|
||||||
Project *m_project;
|
Project *m_project;
|
||||||
TargetSettingsWidget *m_selector;
|
TargetSettingsWidget *m_selector;
|
||||||
QStackedWidget *m_centralWidget;
|
QStackedWidget *m_centralWidget;
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ TargetSettingsWidget::TargetSettingsWidget(QWidget *parent) :
|
|||||||
this, SIGNAL(addButtonClicked()));
|
this, SIGNAL(addButtonClicked()));
|
||||||
connect(m_targetSelector, SIGNAL(removeButtonClicked()),
|
connect(m_targetSelector, SIGNAL(removeButtonClicked()),
|
||||||
this, SIGNAL(removeButtonClicked()));
|
this, SIGNAL(removeButtonClicked()));
|
||||||
connect(m_targetSelector, SIGNAL(currentIndexChanged(int,int)),
|
connect(m_targetSelector, SIGNAL(currentChanged(int,int)),
|
||||||
this, SIGNAL(currentIndexChanged(int,int)));
|
this, SIGNAL(currentChanged(int,int)));
|
||||||
updateTargetSelector();
|
updateTargetSelector();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public slots:
|
|||||||
signals:
|
signals:
|
||||||
void addButtonClicked();
|
void addButtonClicked();
|
||||||
void removeButtonClicked();
|
void removeButtonClicked();
|
||||||
void currentIndexChanged(int targetIndex, int subIndex);
|
void currentChanged(int targetIndex, int subIndex);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void changeEvent(QEvent *e);
|
void changeEvent(QEvent *e);
|
||||||
|
|||||||
Reference in New Issue
Block a user