Browse Source

Merge branch '289-designer-plugin-crah'

* 289-designer-plugin-crah:
  Don't delete ctkProxyStyle when widget is destroyed
Julien Finet 12 years ago
parent
commit
af031021e5

+ 3 - 4
Libs/Widgets/ctkCheckBox.cpp

@@ -54,9 +54,8 @@ public:
 
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 ctkCheckBoxStyle::ctkCheckBoxStyle(QStyle *baseStyle, QObject* parent)
 ctkCheckBoxStyle::ctkCheckBoxStyle(QStyle *baseStyle, QObject* parent)
-  : Superclass(baseStyle)
+  : Superclass(baseStyle, parent)
 {
 {
-  this->setParent(parent);
 }
 }
 
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
@@ -146,8 +145,8 @@ void ctkCheckBoxPrivate::init()
 {
 {
   Q_Q(ctkCheckBox);
   Q_Q(ctkCheckBox);
   QWidget* parent = q->parentWidget();
   QWidget* parent = q->parentWidget();
-  QStyle* parentStyle = (parent) ? parent->style() : QApplication::style();
-  this->IconStyle = new ctkCheckBoxStyle(parentStyle, q);
+  QStyle* parentStyle = (parent) ? parent->style() : qApp->style();
+  this->IconStyle = new ctkCheckBoxStyle(parentStyle, qApp);
   q->setStyle(this->IconStyle);
   q->setStyle(this->IconStyle);
   this->IconStyle->ensureBaseStyle();
   this->IconStyle->ensureBaseStyle();
 }
 }

+ 4 - 3
Libs/Widgets/ctkCollapsibleGroupBox.cpp

@@ -38,7 +38,8 @@ class ctkCollapsibleGroupBoxStyle:public ctkProxyStyle
 {
 {
 public:
 public:
   typedef ctkProxyStyle Superclass;
   typedef ctkProxyStyle Superclass;
-  ctkCollapsibleGroupBoxStyle(QStyle* style = 0) : Superclass(style)
+  ctkCollapsibleGroupBoxStyle(QStyle* style = 0, QObject* parent =0)
+    : Superclass(style, parent)
   {
   {
   }
   }
   virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption * opt, QPainter * p, const QWidget * widget = 0) const
   virtual void drawPrimitive(PrimitiveElement pe, const QStyleOption * opt, QPainter * p, const QWidget * widget = 0) const
@@ -126,8 +127,8 @@ void ctkCollapsibleGroupBoxPrivate::init()
   this->MaxHeight = q->maximumHeight();
   this->MaxHeight = q->maximumHeight();
 #if QT_VERSION >= 0x040600
 #if QT_VERSION >= 0x040600
   QWidget* parent = q->parentWidget();
   QWidget* parent = q->parentWidget();
-  QStyle* parentStyle = (parent) ? parent->style() : QApplication::style();
-  this->GroupBoxStyle = new ctkCollapsibleGroupBoxStyle(parentStyle);
+  QStyle* parentStyle = (parent) ? parent->style() : qApp->style();
+  this->GroupBoxStyle = new ctkCollapsibleGroupBoxStyle(parentStyle, qApp);
   q->setStyle(this->GroupBoxStyle);
   q->setStyle(this->GroupBoxStyle);
   this->GroupBoxStyle->ensureBaseStyle();
   this->GroupBoxStyle->ensureBaseStyle();
 #else
 #else

+ 3 - 2
Libs/Widgets/ctkProxyStyle.cpp

@@ -79,19 +79,20 @@ void ctkProxyStylePrivate::setBaseStyle(QProxyStyle* proxy, QStyle *style)const
 }
 }
 
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
-ctkProxyStyle::ctkProxyStyle(QStyle *style)
+ctkProxyStyle::ctkProxyStyle(QStyle *style, QObject* parent)
   : d_ptr(new ctkProxyStylePrivate(*this))
   : d_ptr(new ctkProxyStylePrivate(*this))
 {
 {
   Q_D(ctkProxyStyle);
   Q_D(ctkProxyStyle);
   d->baseStyle = style;
   d->baseStyle = style;
   this->setBaseStyle(style);
   this->setBaseStyle(style);
+  this->setParent(parent);
 }
 }
 
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 ctkProxyStyle::~ctkProxyStyle()
 ctkProxyStyle::~ctkProxyStyle()
 {
 {
   Q_D(ctkProxyStyle);
   Q_D(ctkProxyStyle);
-  if (d->baseStyle == qApp->style())
+  if (!QApplication::closingDown() && d->baseStyle == QApplication::style())
     {
     {
     d->baseStyle->setParent(qApp); // don't delete the application style.
     d->baseStyle->setParent(qApp); // don't delete the application style.
     }
     }

+ 1 - 1
Libs/Widgets/ctkProxyStyle.h

@@ -36,7 +36,7 @@ class CTK_WIDGETS_EXPORT ctkProxyStyle : public QProxyStyle
 {
 {
   Q_OBJECT
   Q_OBJECT
 public:
 public:
-  ctkProxyStyle(QStyle *baseStyle = 0);
+  ctkProxyStyle(QStyle *baseStyle = 0, QObject* parent = 0);
   virtual ~ctkProxyStyle();
   virtual ~ctkProxyStyle();
 
 
   void ensureBaseStyle()const;
   void ensureBaseStyle()const;