From 80e9a5a4b8021f37baf2c189458f200a6a7ffd67 Mon Sep 17 00:00:00 2001 From: Johannes Hilden Date: Sun, 15 Oct 2017 11:39:23 +0300 Subject: [PATCH] Make sure ripple is destroyed when overlay host widget is (segfault error) --- components/lib/qtmaterialrippleoverlay.cpp | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/components/lib/qtmaterialrippleoverlay.cpp b/components/lib/qtmaterialrippleoverlay.cpp index 76d3295..062d215 100644 --- a/components/lib/qtmaterialrippleoverlay.cpp +++ b/components/lib/qtmaterialrippleoverlay.cpp @@ -21,24 +21,27 @@ QtMaterialRippleOverlay::~QtMaterialRippleOverlay() void QtMaterialRippleOverlay::addRipple(QtMaterialRipple *ripple) { - //ripple->setOverlay(this); - //m_ripples.push_back(ripple); - //ripple->start(); + ripple->setOverlay(this); + m_ripples.push_back(ripple); + ripple->start(); + + connect(this, SIGNAL(destroyed(QObject*)), ripple, SLOT(stop())); + connect(this, SIGNAL(destroyed(QObject*)), ripple, SLOT(deleteLater())); } void QtMaterialRippleOverlay::addRipple(const QPoint &position, qreal radius) { - //QtMaterialRipple *ripple = new QtMaterialRipple(position); - //ripple->setRadiusEndValue(radius); - //addRipple(ripple); + QtMaterialRipple *ripple = new QtMaterialRipple(position); + ripple->setRadiusEndValue(radius); + addRipple(ripple); } void QtMaterialRippleOverlay::removeRipple(QtMaterialRipple *ripple) { - //if (m_ripples.removeOne(ripple)) { - // delete ripple; - // update(); - //} + if (m_ripples.removeOne(ripple)) { + delete ripple; + update(); + } } /*!