Make sure the parent widget still exists.
authorJarek Kobus <jaroslaw.kobus@nokia.com>
Mon, 13 Aug 2012 13:49:23 +0000 (15:49 +0200)
committerQt by Nokia <qt-info@nokia.com>
Wed, 22 Aug 2012 00:49:25 +0000 (02:49 +0200)
It may happen that InPlaceWidgetHelper's destructor
is called after parent widget destructor. Now inside
InPlaceWidgetHelper's destructor we check if parent
widget still exists.

Task-number: QTCREATORBUG-7684
Change-Id: I4c9ecbfae7323fd95345ccabc113218a7011ebe8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
src/designer/src/components/taskmenu/inplace_widget_helper.cpp
src/designer/src/components/taskmenu/inplace_widget_helper.h

index 9be9294..a6f902c 100644 (file)
@@ -65,7 +65,8 @@ namespace qdesigner_internal {
 
     InPlaceWidgetHelper::~InPlaceWidgetHelper()
     {
-        m_parentWidget->setAttribute(Qt::WA_NoChildEventsForParent, m_noChildEvent);
+        if (m_parentWidget)
+            m_parentWidget->setAttribute(Qt::WA_NoChildEventsForParent, m_noChildEvent);
     }
 
     Qt::Alignment InPlaceWidgetHelper::alignment() const {
index de13a23..972b5a7 100644 (file)
@@ -46,6 +46,7 @@
 #include <QtCore/QObject>
 #include <QtCore/QPoint>
 #include <QtCore/QSize>
+#include <QtCore/QPointer>
 #include <qglobal.h>
 
 QT_BEGIN_NAMESPACE
@@ -75,7 +76,7 @@ namespace qdesigner_internal {
         Qt::Alignment alignment() const;
     private:
         QWidget *m_editorWidget;
-        QWidget *m_parentWidget;
+        QPointer<QWidget> m_parentWidget;
         const bool m_noChildEvent;
         QPoint m_posOffset;
         QSize m_sizeOffset;