forked from qt-creator/qt-creator
Spinner: Fix destructor
Delete the accociated overlay widget on destruction. Secure calls to overlay with QPointer. Change-Id: I25a76498c39f16b89ddcea8fef1ac934d3c8652b Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -238,11 +238,18 @@ Spinner::Spinner(SpinnerSize size, QWidget *parent)
|
||||
: QObject(parent)
|
||||
, m_widget(new SpinnerOverlay(size, parent)) {}
|
||||
|
||||
Spinner::~Spinner()
|
||||
{
|
||||
if (m_widget)
|
||||
delete m_widget;
|
||||
}
|
||||
|
||||
/*!
|
||||
Sets the size of the spinner to the given \a size.
|
||||
*/
|
||||
void Spinner::setSize(SpinnerSize size)
|
||||
{
|
||||
if (m_widget)
|
||||
m_widget->setSize(size);
|
||||
}
|
||||
|
||||
@@ -251,6 +258,7 @@ void Spinner::setSize(SpinnerSize size)
|
||||
*/
|
||||
void Spinner::setColor(const QColor &color)
|
||||
{
|
||||
if (m_widget)
|
||||
m_widget->setColor(color);
|
||||
}
|
||||
|
||||
@@ -260,6 +268,7 @@ void Spinner::setColor(const QColor &color)
|
||||
*/
|
||||
void Spinner::show()
|
||||
{
|
||||
if (m_widget)
|
||||
m_widget->show();
|
||||
}
|
||||
|
||||
@@ -268,6 +277,7 @@ void Spinner::show()
|
||||
*/
|
||||
void Spinner::hide()
|
||||
{
|
||||
if (m_widget)
|
||||
m_widget->hide();
|
||||
}
|
||||
|
||||
@@ -276,7 +286,7 @@ void Spinner::hide()
|
||||
*/
|
||||
bool Spinner::isVisible() const
|
||||
{
|
||||
return m_widget->isVisible();
|
||||
return m_widget ? m_widget->isVisible() : false;
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -285,6 +295,7 @@ bool Spinner::isVisible() const
|
||||
*/
|
||||
void Spinner::setVisible(bool visible)
|
||||
{
|
||||
if (m_widget)
|
||||
m_widget->setVisible(visible);
|
||||
}
|
||||
|
||||
|
@@ -6,6 +6,7 @@
|
||||
|
||||
#include "spinner_global.h"
|
||||
|
||||
#include <QPointer>
|
||||
#include <QWidget>
|
||||
|
||||
namespace SpinnerSolution {
|
||||
@@ -20,12 +21,15 @@ Q_ENUM_NS(SpinnerState)
|
||||
|
||||
// TODO: SpinnerOverlay and SpinnerWidget?
|
||||
|
||||
class SpinnerOverlay;
|
||||
|
||||
class SPINNER_EXPORT Spinner : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Spinner(SpinnerSize size, QWidget *parent = nullptr);
|
||||
~Spinner() override;
|
||||
void setSize(SpinnerSize size);
|
||||
void setColor(const QColor &color);
|
||||
void show();
|
||||
@@ -34,7 +38,7 @@ public:
|
||||
void setVisible(bool visible);
|
||||
|
||||
private:
|
||||
class SpinnerOverlay *m_widget = nullptr;
|
||||
QPointer<SpinnerOverlay> m_widget;
|
||||
};
|
||||
|
||||
class SPINNER_EXPORT SpinnerWidget : public QWidget
|
||||
|
Reference in New Issue
Block a user