aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cmakeprojectmanager
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp29
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectmanager.h10
2 files changed, 21 insertions, 18 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
index fe0c2561d0..556a8d88dc 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
@@ -291,22 +291,23 @@ QString CMakeSettingsPage::findCmakeExecutable() const
return Utils::Environment::systemEnvironment().searchInPath(QLatin1String("cmake"));
}
-QWidget *CMakeSettingsPage::createPage(QWidget *parent)
+QWidget *CMakeSettingsPage::widget()
{
- QWidget *outerWidget = new QWidget(parent);
- QFormLayout *formLayout = new QFormLayout(outerWidget);
- formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
- m_pathchooser = new Utils::PathChooser;
- m_pathchooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
- formLayout->addRow(tr("Executable:"), m_pathchooser);
- formLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding));
+ if (!m_widget) {
+ m_widget = new QWidget;
+ QFormLayout *formLayout = new QFormLayout(m_widget);
+ formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
+ m_pathchooser = new Utils::PathChooser;
+ m_pathchooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
+ formLayout->addRow(tr("Executable:"), m_pathchooser);
+ formLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding));
+
+ m_preferNinja = new QCheckBox(tr("Prefer Ninja generator (CMake 2.8.9 or higher required)"));
+ formLayout->addRow(m_preferNinja);
+ }
m_pathchooser->setPath(m_cmakeValidatorForUser.cmakeExecutable());
-
- m_preferNinja = new QCheckBox(tr("Prefer Ninja generator (CMake 2.8.9 or higher required)"));
m_preferNinja->setChecked(preferNinja());
- formLayout->addRow(m_preferNinja);
-
- return outerWidget;
+ return m_widget;
}
void CMakeSettingsPage::saveSettings() const
@@ -329,7 +330,7 @@ void CMakeSettingsPage::apply()
void CMakeSettingsPage::finish()
{
-
+ delete m_widget;
}
QString CMakeSettingsPage::cmakeExecutable() const
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
index 55e4507147..f99ed968f2 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h
@@ -40,12 +40,13 @@
#include <utils/environment.h>
#include <utils/pathchooser.h>
-#include <QFuture>
-#include <QStringList>
+#include <QAction>
#include <QCheckBox>
#include <QDir>
+#include <QFuture>
+#include <QPointer>
+#include <QStringList>
#include <QVector>
-#include <QAction>
#include "cmakevalidator.h"
@@ -108,7 +109,7 @@ public:
CMakeSettingsPage();
~CMakeSettingsPage();
- QWidget *createPage(QWidget *parent);
+ QWidget *widget();
void apply();
void finish();
@@ -125,6 +126,7 @@ private:
void saveSettings() const;
QString findCmakeExecutable() const;
+ QPointer<QWidget> m_widget;
Utils::PathChooser *m_pathchooser;
QCheckBox *m_preferNinja;
CMakeValidator m_cmakeValidatorForUser;