diff --git a/src/libs/advanceddockingsystem/dockareawidget.cpp b/src/libs/advanceddockingsystem/dockareawidget.cpp index 5cf12d70509..89fbbcfb3b6 100644 --- a/src/libs/advanceddockingsystem/dockareawidget.cpp +++ b/src/libs/advanceddockingsystem/dockareawidget.cpp @@ -189,7 +189,8 @@ struct DockAreaWidgetPrivate { DockAreaWidget *q = nullptr; QBoxLayout *m_layout = nullptr; - DockAreaLayout *m_contentsLayout = nullptr; + // DockAreaLayout is not a QObject -> std::unique_ptr manages deletion + std::unique_ptr m_contentsLayout; DockAreaTitleBar *m_titleBar = nullptr; DockManager *m_dockManager = nullptr; AutoHideDockContainer *m_autoHideDockContainer = nullptr; @@ -328,7 +329,7 @@ DockAreaWidget::DockAreaWidget(DockManager *dockManager, DockContainerWidget *pa setLayout(d->m_layout); d->createTitleBar(); - d->m_contentsLayout = new DockAreaLayout(d->m_layout); + d->m_contentsLayout = std::make_unique(d->m_layout); if (d->m_dockManager) emit d->m_dockManager->dockAreaCreated(this); } @@ -336,8 +337,6 @@ DockAreaWidget::DockAreaWidget(DockManager *dockManager, DockContainerWidget *pa DockAreaWidget::~DockAreaWidget() { qCInfo(adsLog) << Q_FUNC_INFO; - delete d->m_contentsLayout; - delete d; } DockManager *DockAreaWidget::dockManager() const diff --git a/src/libs/advanceddockingsystem/dockareawidget.h b/src/libs/advanceddockingsystem/dockareawidget.h index 59f8b9ee207..dae4d942b8c 100644 --- a/src/libs/advanceddockingsystem/dockareawidget.h +++ b/src/libs/advanceddockingsystem/dockareawidget.h @@ -9,6 +9,8 @@ #include +#include + QT_BEGIN_NAMESPACE class QAbstractButton; class QXmlStreamWriter; @@ -33,7 +35,7 @@ class ADS_EXPORT DockAreaWidget : public QFrame { Q_OBJECT private: - DockAreaWidgetPrivate *d; ///< private data (pimpl) + std::unique_ptr d; ///< private data (pimpl) friend struct DockAreaWidgetPrivate; friend class DockContainerWidget; friend class DockContainerWidgetPrivate;