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)
|
: QObject(parent)
|
||||||
, m_widget(new SpinnerOverlay(size, 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.
|
Sets the size of the spinner to the given \a size.
|
||||||
*/
|
*/
|
||||||
void Spinner::setSize(SpinnerSize size)
|
void Spinner::setSize(SpinnerSize size)
|
||||||
{
|
{
|
||||||
|
if (m_widget)
|
||||||
m_widget->setSize(size);
|
m_widget->setSize(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -251,6 +258,7 @@ void Spinner::setSize(SpinnerSize size)
|
|||||||
*/
|
*/
|
||||||
void Spinner::setColor(const QColor &color)
|
void Spinner::setColor(const QColor &color)
|
||||||
{
|
{
|
||||||
|
if (m_widget)
|
||||||
m_widget->setColor(color);
|
m_widget->setColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,6 +268,7 @@ void Spinner::setColor(const QColor &color)
|
|||||||
*/
|
*/
|
||||||
void Spinner::show()
|
void Spinner::show()
|
||||||
{
|
{
|
||||||
|
if (m_widget)
|
||||||
m_widget->show();
|
m_widget->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,6 +277,7 @@ void Spinner::show()
|
|||||||
*/
|
*/
|
||||||
void Spinner::hide()
|
void Spinner::hide()
|
||||||
{
|
{
|
||||||
|
if (m_widget)
|
||||||
m_widget->hide();
|
m_widget->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,7 +286,7 @@ void Spinner::hide()
|
|||||||
*/
|
*/
|
||||||
bool Spinner::isVisible() const
|
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)
|
void Spinner::setVisible(bool visible)
|
||||||
{
|
{
|
||||||
|
if (m_widget)
|
||||||
m_widget->setVisible(visible);
|
m_widget->setVisible(visible);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "spinner_global.h"
|
#include "spinner_global.h"
|
||||||
|
|
||||||
|
#include <QPointer>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
namespace SpinnerSolution {
|
namespace SpinnerSolution {
|
||||||
@@ -20,12 +21,15 @@ Q_ENUM_NS(SpinnerState)
|
|||||||
|
|
||||||
// TODO: SpinnerOverlay and SpinnerWidget?
|
// TODO: SpinnerOverlay and SpinnerWidget?
|
||||||
|
|
||||||
|
class SpinnerOverlay;
|
||||||
|
|
||||||
class SPINNER_EXPORT Spinner : public QObject
|
class SPINNER_EXPORT Spinner : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit Spinner(SpinnerSize size, QWidget *parent = nullptr);
|
explicit Spinner(SpinnerSize size, QWidget *parent = nullptr);
|
||||||
|
~Spinner() override;
|
||||||
void setSize(SpinnerSize size);
|
void setSize(SpinnerSize size);
|
||||||
void setColor(const QColor &color);
|
void setColor(const QColor &color);
|
||||||
void show();
|
void show();
|
||||||
@@ -34,7 +38,7 @@ public:
|
|||||||
void setVisible(bool visible);
|
void setVisible(bool visible);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class SpinnerOverlay *m_widget = nullptr;
|
QPointer<SpinnerOverlay> m_widget;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SPINNER_EXPORT SpinnerWidget : public QWidget
|
class SPINNER_EXPORT SpinnerWidget : public QWidget
|
||||||
|
Reference in New Issue
Block a user