aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/targetsettingspanel.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2016-10-05 08:31:16 +0200
committerhjk <hjk@qt.io>2016-10-05 16:14:42 +0000
commit33c732c60c1628a5445084fce433b10a84bffc93 (patch)
tree463cd5b0b6b12723e04ed00b694499b1d9857e74 /src/plugins/projectexplorer/targetsettingspanel.cpp
parentb9a8ed31ae2bbd8d7ccb4b796903cb7677724230 (diff)
ProjectWindow: Fix crash in TargetSetupPage
Move ownership of the ProjectImporter to the Project. Task-number: QTCREATORBUG-16744 Change-Id: I7fc217ce8058287c5435b259bdc5300a926f8098 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/targetsettingspanel.cpp')
-rw-r--r--src/plugins/projectexplorer/targetsettingspanel.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp
index a7e827ed52..0e14218fb7 100644
--- a/src/plugins/projectexplorer/targetsettingspanel.cpp
+++ b/src/plugins/projectexplorer/targetsettingspanel.cpp
@@ -132,7 +132,6 @@ TargetSetupPageWrapper::TargetSetupPageWrapper(Project *project)
: m_project(project)
{
m_targetSetupPage = new TargetSetupPage(this);
- m_targetSetupPage->setProjectImporter(project->createProjectImporter());
m_targetSetupPage->setUseScrollArea(false);
m_targetSetupPage->setProjectPath(project->projectFilePath().toString());
m_targetSetupPage->setRequiredKitMatcher(project->requiredKitMatcher());
@@ -209,7 +208,7 @@ class TargetGroupItemPrivate : public QObject
public:
TargetGroupItemPrivate(TargetGroupItem *q, Project *project);
- ~TargetGroupItemPrivate() { /*delete m_importer;*/ }
+ ~TargetGroupItemPrivate();
void handleRemovedKit(Kit *kit);
void handleAddedKit(Kit *kit);
@@ -224,8 +223,7 @@ public:
TargetGroupItem *q;
QString m_displayName;
- QPointer<Project> m_project;
- ProjectImporter *m_importer;
+ Project *m_project;
QPointer<QWidget> m_noKitLabel;
QPointer<QWidget> m_configurePage;
@@ -281,12 +279,13 @@ void TargetGroupItemPrivate::ensureWidget()
void TargetGroupItemPrivate::importTarget(const Utils::FileName &path)
{
- if (!m_importer)
+ ProjectImporter *importer = m_project->projectImporter();
+ if (!importer)
return;
Target *target = nullptr;
BuildConfiguration *bc = nullptr;
- QList<BuildInfo *> toImport = m_importer->import(path, false);
+ QList<BuildInfo *> toImport = importer->import(path, false);
foreach (BuildInfo *info, toImport) {
target = m_project->target(info->kitId);
if (!target) {
@@ -519,7 +518,7 @@ public:
bool isEnabled() const { return target() != 0; }
public:
- Project *m_project; // Not owned.
+ QPointer<Project> m_project; // Not owned.
Id m_kitId;
int m_currentChild = 1; // Use run page by default.
};
@@ -706,13 +705,10 @@ TargetGroupItem::~TargetGroupItem()
delete d;
}
-TargetGroupItemPrivate::TargetGroupItemPrivate(TargetGroupItem *q,
- Project *project)
+TargetGroupItemPrivate::TargetGroupItemPrivate(TargetGroupItem *q, Project *project)
: q(q), m_project(project)
{
- m_importer = project->createProjectImporter();
-
- if (m_importer) {
+ if (project->projectImporter()) {
auto importAction = new QAction(tr("Import existing build..."), 0);
QObject::connect(importAction, &QAction::triggered, [this] {
QString dir = m_project->projectDirectory().toString();
@@ -730,6 +726,11 @@ TargetGroupItemPrivate::TargetGroupItemPrivate(TargetGroupItem *q,
rebuildContents();
}
+TargetGroupItemPrivate::~TargetGroupItemPrivate()
+{
+ disconnect();
+}
+
QVariant TargetGroupItem::data(int column, int role) const
{
if (role == Qt::DisplayRole)