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;
|
DockAreaWidget *q = nullptr;
|
||||||
QBoxLayout *m_layout = 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;
|
DockAreaTitleBar *m_titleBar = nullptr;
|
||||||
DockManager *m_dockManager = nullptr;
|
DockManager *m_dockManager = nullptr;
|
||||||
AutoHideDockContainer *m_autoHideDockContainer = nullptr;
|
AutoHideDockContainer *m_autoHideDockContainer = nullptr;
|
||||||
@@ -328,7 +329,7 @@ DockAreaWidget::DockAreaWidget(DockManager *dockManager, DockContainerWidget *pa
|
|||||||
setLayout(d->m_layout);
|
setLayout(d->m_layout);
|
||||||
|
|
||||||
d->createTitleBar();
|
d->createTitleBar();
|
||||||
d->m_contentsLayout = new DockAreaLayout(d->m_layout);
|
d->m_contentsLayout = std::make_unique<DockAreaLayout>(d->m_layout);
|
||||||
if (d->m_dockManager)
|
if (d->m_dockManager)
|
||||||
emit d->m_dockManager->dockAreaCreated(this);
|
emit d->m_dockManager->dockAreaCreated(this);
|
||||||
}
|
}
|
||||||
@@ -336,8 +337,6 @@ DockAreaWidget::DockAreaWidget(DockManager *dockManager, DockContainerWidget *pa
|
|||||||
DockAreaWidget::~DockAreaWidget()
|
DockAreaWidget::~DockAreaWidget()
|
||||||
{
|
{
|
||||||
qCInfo(adsLog) << Q_FUNC_INFO;
|
qCInfo(adsLog) << Q_FUNC_INFO;
|
||||||
delete d->m_contentsLayout;
|
|
||||||
delete d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DockManager *DockAreaWidget::dockManager() const
|
DockManager *DockAreaWidget::dockManager() const
|
||||||
|
@@ -9,6 +9,8 @@
|
|||||||
|
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
class QAbstractButton;
|
class QAbstractButton;
|
||||||
class QXmlStreamWriter;
|
class QXmlStreamWriter;
|
||||||
@@ -33,7 +35,7 @@ class ADS_EXPORT DockAreaWidget : public QFrame
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
private:
|
||||||
DockAreaWidgetPrivate *d; ///< private data (pimpl)
|
std::unique_ptr<DockAreaWidgetPrivate> d; ///< private data (pimpl)
|
||||||
friend struct DockAreaWidgetPrivate;
|
friend struct DockAreaWidgetPrivate;
|
||||||
friend class DockContainerWidget;
|
friend class DockContainerWidget;
|
||||||
friend class DockContainerWidgetPrivate;
|
friend class DockContainerWidgetPrivate;
|
||||||
|
Reference in New Issue
Block a user