diff --git a/kstyle/breezestyle.cpp b/kstyle/breezestyle.cpp index d3f6d46b..ab814ddc 100644 --- a/kstyle/breezestyle.cpp +++ b/kstyle/breezestyle.cpp @@ -197,9 +197,24 @@ namespace Breeze //______________________________________________________________ Style::~Style( void ) + { + cleanup(); + } + + //______________________________________________________________ + void Style::unpolish( QApplication* ) + { + // NOTE: unpolish is not called in general on tear-down of Application + // only when a new QStyle is loaded by the QApplication unpolish is invoked + cleanup(); + } + + void Style::cleanup( void ) { delete _shadowHelper; + _shadowHelper = nullptr; delete _helper; + _helper = nullptr; } //______________________________________________________________ diff --git a/kstyle/breezestyle.h b/kstyle/breezestyle.h index a627252a..aa2478b6 100644 --- a/kstyle/breezestyle.h +++ b/kstyle/breezestyle.h @@ -92,7 +92,6 @@ namespace Breeze //* needed to avoid warnings at compilation time using ParentStyleClass::polish; - using ParentStyleClass::unpolish; //* widget polishing virtual void polish( QWidget* ); @@ -100,6 +99,9 @@ namespace Breeze //* widget unpolishing virtual void unpolish( QWidget* ); + //* application unpolishing + void unpolish( QApplication* ) override; + //* polish scrollarea void polishScrollArea( QAbstractScrollArea* ); @@ -471,6 +473,9 @@ namespace Breeze private: + //* shared cleanup for unpolish and dtor + void cleanup(); + //*@name scrollbar button types (for addLine and subLine ) //@{ ScrollBarButtonType _addLineButtons;