diff --git a/src/controls/QskEvent.cpp b/src/controls/QskEvent.cpp index 84230353..b70b9e7c 100644 --- a/src/controls/QskEvent.cpp +++ b/src/controls/QskEvent.cpp @@ -151,12 +151,17 @@ QskPopupEvent* QskPopupEvent::clone() const // -- QskGestureEvent -QskGestureEvent::QskGestureEvent( const QskGesture* gesture ) +QskGestureEvent::QskGestureEvent( std::shared_ptr< const QskGesture > gesture ) : QskEvent( QskEvent::Gesture ) , m_gesture( gesture ) { } +QskGestureEvent* QskGestureEvent::clone() const +{ + return new QskGestureEvent( *this ); +} + // -- QskAnimatorEvent QskAnimatorEvent::QskAnimatorEvent( QskAspect::Aspect aspect, State state ) diff --git a/src/controls/QskEvent.h b/src/controls/QskEvent.h index e913168b..4f93c658 100644 --- a/src/controls/QskEvent.h +++ b/src/controls/QskEvent.h @@ -102,12 +102,14 @@ class QSK_EXPORT QskPopupEvent : public QskEvent class QSK_EXPORT QskGestureEvent : public QskEvent { public: - QskGestureEvent( const QskGesture* gesture ); + QskGestureEvent( std::shared_ptr< const QskGesture > ); - inline const QskGesture* gesture() const { return m_gesture; } + inline std::shared_ptr< const QskGesture > gesture() const { return m_gesture; } + + QskGestureEvent* clone() const override; private: - const QskGesture* m_gesture; + std::shared_ptr< const QskGesture > m_gesture; }; class QSK_EXPORT QskAnimatorEvent : public QskEvent diff --git a/src/controls/QskPanGestureRecognizer.cpp b/src/controls/QskPanGestureRecognizer.cpp index 7fb9dbc2..6a2ce28d 100644 --- a/src/controls/QskPanGestureRecognizer.cpp +++ b/src/controls/QskPanGestureRecognizer.cpp @@ -58,7 +58,7 @@ static void qskSendPanGestureEvent( QQuickItem* item, QskGesture::State state, qreal velocity, qreal angle, const QPointF& origin, const QPointF& lastPosition, const QPointF& position ) { - auto gesture = new QskPanGesture(); + auto gesture = std::make_shared< QskPanGesture >(); gesture->setState( state ); gesture->setAngle( angle ); diff --git a/src/controls/QskScrollBox.cpp b/src/controls/QskScrollBox.cpp index 90ed4809..3f9fceaf 100644 --- a/src/controls/QskScrollBox.cpp +++ b/src/controls/QskScrollBox.cpp @@ -363,7 +363,7 @@ void QskScrollBox::gestureEvent( QskGestureEvent* event ) { if ( event->gesture()->type() == QskGesture::Pan ) { - const auto gesture = static_cast< const QskPanGesture* >( event->gesture() ); + const auto gesture = static_cast< const QskPanGesture* >( event->gesture().get() ); switch ( gesture->state() ) {