diff --git a/src/plugins/projectexplorer/kitoptionspage.cpp b/src/plugins/projectexplorer/kitoptionspage.cpp index d5c709194a1..a4fe93c1f8a 100644 --- a/src/plugins/projectexplorer/kitoptionspage.cpp +++ b/src/plugins/projectexplorer/kitoptionspage.cpp @@ -23,11 +23,11 @@ namespace ProjectExplorer { namespace Internal { -// -------------------------------------------------------------------------- -// KitOptionsPageWidget: -// -------------------------------------------------------------------------- +// KitOptionsPageWidget -class KitOptionsPageWidget : public QWidget +static KitOptionsPageWidget *kitOptionsPageWidget = nullptr; + +class KitOptionsPageWidget : public Core::IOptionsPageWidget { public: KitOptionsPageWidget(); @@ -42,6 +42,8 @@ public: void makeDefaultKit(); void updateState(); + void apply() final { m_model->apply(); } + public: QTreeView *m_kitsView = nullptr; QPushButton *m_addButton = nullptr; @@ -58,6 +60,7 @@ public: KitOptionsPageWidget::KitOptionsPageWidget() { + kitOptionsPageWidget = this; m_kitsView = new QTreeView(this); m_kitsView->setUniformRowHeights(true); m_kitsView->header()->setStretchLastSection(true); @@ -249,28 +252,7 @@ KitOptionsPage::KitOptionsPage() setCategory(Constants::KITS_SETTINGS_CATEGORY); setDisplayCategory(Tr::tr("Kits")); setCategoryIconPath(":/projectexplorer/images/settingscategory_kits.png"); -} - -QWidget *KitOptionsPage::widget() -{ - if (!m_widget) - m_widget = new Internal::KitOptionsPageWidget; - - return m_widget; -} - -void KitOptionsPage::apply() -{ - if (m_widget) - m_widget->m_model->apply(); -} - -void KitOptionsPage::finish() -{ - if (m_widget) { - delete m_widget; - m_widget = nullptr; - } + setWidgetCreator([] { return new Internal::KitOptionsPageWidget; }); } void KitOptionsPage::showKit(Kit *k) @@ -278,13 +260,15 @@ void KitOptionsPage::showKit(Kit *k) if (!k) return; - (void) widget(); - QModelIndex index = m_widget->m_model->indexOf(k); - m_widget->m_selectionModel->select(index, + Internal::KitOptionsPageWidget *widget = Internal::kitOptionsPageWidget; + QTC_ASSERT(widget, return); + + QModelIndex index = widget->m_model->indexOf(k); + widget->m_selectionModel->select(index, QItemSelectionModel::Clear | QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows); - m_widget->m_kitsView->scrollTo(index); + widget->m_kitsView->scrollTo(index); } KitOptionsPage *KitOptionsPage::instance() diff --git a/src/plugins/projectexplorer/kitoptionspage.h b/src/plugins/projectexplorer/kitoptionspage.h index 5ce589cd6b2..b3378060bee 100644 --- a/src/plugins/projectexplorer/kitoptionspage.h +++ b/src/plugins/projectexplorer/kitoptionspage.h @@ -20,15 +20,8 @@ class PROJECTEXPLORER_EXPORT KitOptionsPage : public Core::IOptionsPage public: KitOptionsPage(); - QWidget *widget() override; - void apply() override; - void finish() override; - void showKit(Kit *k); static KitOptionsPage *instance(); - -private: - QPointer m_widget; }; } // namespace ProjectExplorer