diff options
-rw-r--r-- | vcl/inc/qt5/Qt5Object.hxx | 3 | ||||
-rw-r--r-- | vcl/qt5/Qt5Object.cxx | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/vcl/inc/qt5/Qt5Object.hxx b/vcl/inc/qt5/Qt5Object.hxx index 6bfdd81b0327..c6dce6e944be 100644 --- a/vcl/inc/qt5/Qt5Object.hxx +++ b/vcl/inc/qt5/Qt5Object.hxx @@ -33,8 +33,6 @@ class Qt5Object : public QObject, public SalObject { Q_OBJECT - friend class Qt5OpenGLContext; - SystemEnvData m_aSystemData; Qt5Frame* m_pParent; QWidget* m_pQWidget; // main widget, container @@ -43,6 +41,7 @@ class Qt5Object : public QObject, public SalObject public: Qt5Object(Qt5Frame* pParent, bool bShow); + ~Qt5Object() override; Qt5Frame* frame() const { return m_pParent; } QWidget* widget() const { return m_pQWidget; } diff --git a/vcl/qt5/Qt5Object.cxx b/vcl/qt5/Qt5Object.cxx index 6c5238f012dc..961622eeb893 100644 --- a/vcl/qt5/Qt5Object.cxx +++ b/vcl/qt5/Qt5Object.cxx @@ -36,6 +36,7 @@ Qt5Object::Qt5Object(Qt5Frame* pParent, bool bShow) m_pQWindow = new Qt5ObjectWindow(*this); m_pQWidget = QWidget::createWindowContainer(m_pQWindow, pParent->GetQWidget()); m_pQWidget->setAttribute(Qt::WA_NoSystemBackground); + connect(m_pQWidget, &QObject::destroyed, this, [this]() { m_pQWidget = nullptr; }); if (bShow) m_pQWidget->show(); @@ -65,6 +66,15 @@ Qt5Object::Qt5Object(Qt5Frame* pParent, bool bShow) } } +Qt5Object::~Qt5Object() +{ + if (m_pQWidget) + { + m_pQWidget->setParent(nullptr); + delete m_pQWidget; + } +} + void Qt5Object::ResetClipRegion() { if (m_pQWidget) |