forked from qt-creator/qt-creator
ADS: fix crash on exit
None QObjects are not children of something - so they need to get tracked. Task-number: QDS-11555 Change-Id: I866097f9553a6080b30f0c12362bf7ec66321c05 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -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<DockAreaLayout> 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<DockAreaLayout>(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
|
||||
|
@@ -9,6 +9,8 @@
|
||||
|
||||
#include <QFrame>
|
||||
|
||||
#include <memory>
|
||||
|
||||
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<DockAreaWidgetPrivate> d; ///< private data (pimpl)
|
||||
friend struct DockAreaWidgetPrivate;
|
||||
friend class DockContainerWidget;
|
||||
friend class DockContainerWidgetPrivate;
|
||||
|
Reference in New Issue
Block a user