aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/toolchainoptionspage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/toolchainoptionspage.cpp')
-rw-r--r--src/plugins/projectexplorer/toolchainoptionspage.cpp45
1 files changed, 27 insertions, 18 deletions
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp
index b8df603850f..e0717ab7804 100644
--- a/src/plugins/projectexplorer/toolchainoptionspage.cpp
+++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp
@@ -48,20 +48,8 @@ class ToolChainTreeItem : public TreeItem
{
public:
ToolChainTreeItem(QStackedWidget *parentWidget, ToolChain *tc, bool c) :
- toolChain(tc), changed(c)
- {
- widget = tc->createConfigurationWidget().release();
- if (widget) {
- parentWidget->addWidget(widget);
- if (tc->isAutoDetected())
- widget->makeReadOnly();
- QObject::connect(widget, &ToolChainConfigWidget::dirty,
- [this] {
- changed = true;
- update();
- });
- }
- }
+ toolChain(tc), changed(c), m_parentWidget(parentWidget)
+ {}
QVariant data(int column, int role) const override
{
@@ -93,9 +81,30 @@ public:
return QVariant();
}
+ ToolChainConfigWidget *widget()
+ {
+ if (!m_widget) {
+ m_widget = toolChain->createConfigurationWidget().release();
+ if (m_widget) {
+ m_parentWidget->addWidget(m_widget);
+ if (toolChain->isAutoDetected())
+ m_widget->makeReadOnly();
+ QObject::connect(m_widget, &ToolChainConfigWidget::dirty,
+ [this] {
+ changed = true;
+ update();
+ });
+ }
+ }
+ return m_widget;
+ }
+
ToolChain *toolChain;
- ToolChainConfigWidget *widget;
bool changed;
+
+private:
+ ToolChainConfigWidget *m_widget = nullptr;
+ QStackedWidget *m_parentWidget = nullptr;
};
class DetectionSettingsDialog : public QDialog
@@ -423,7 +432,7 @@ void ToolChainOptionsWidget::toolChainSelectionChanged()
{
ToolChainTreeItem *item = currentTreeItem();
- QWidget *currentTcWidget = item ? item->widget : nullptr;
+ QWidget *currentTcWidget = item ? item->widget() : nullptr;
if (currentTcWidget)
m_widgetStack->setCurrentWidget(currentTcWidget);
m_container->setVisible(currentTcWidget);
@@ -447,8 +456,8 @@ void ToolChainOptionsWidget::apply()
for (TreeItem *item : *parent) {
auto tcItem = static_cast<ToolChainTreeItem *>(item);
Q_ASSERT(tcItem->toolChain);
- if (!tcItem->toolChain->isAutoDetected() && tcItem->widget && tcItem->changed)
- tcItem->widget->apply();
+ if (!tcItem->toolChain->isAutoDetected() && tcItem->widget() && tcItem->changed)
+ tcItem->widget()->apply();
tcItem->changed = false;
tcItem->update();
}