QskEvent::clone support overrides

This commit is contained in:
Uwe Rathmann 2020-12-09 14:56:10 +01:00
parent 9f189119da
commit de419971c8
3 changed files with 50 additions and 24 deletions

View File

@ -86,6 +86,14 @@ QskEvent::QskEvent( QskEvent::Type type )
{
}
#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
QskEvent* QskEvent::clone() const
{
return new QskEvent( *this );
}
#endif
// -- QskGeometryChangeEvent
QskGeometryChangeEvent::QskGeometryChangeEvent(
@ -96,6 +104,11 @@ QskGeometryChangeEvent::QskGeometryChangeEvent(
{
}
QskGeometryChangeEvent* QskGeometryChangeEvent::clone() const
{
return new QskGeometryChangeEvent( *this );
}
bool QskGeometryChangeEvent::isResized() const
{
return ( m_rect.width() != m_oldRect.width() ) ||
@ -118,6 +131,11 @@ QskWindowChangeEvent::QskWindowChangeEvent(
{
}
QskWindowChangeEvent* QskWindowChangeEvent::clone() const
{
return new QskWindowChangeEvent( *this );
}
// -- QskPopupEvent
QskPopupEvent::QskPopupEvent( Type type, QskPopup* popup )
@ -126,20 +144,17 @@ QskPopupEvent::QskPopupEvent( Type type, QskPopup* popup )
{
}
// -- QskGestureEvent
QskGestureEvent::QskGestureEvent(
const QskGesture* gesture, bool ownedByEvent )
: QskEvent( QskEvent::Gesture )
, m_gesture( gesture )
, m_gestureOwnedByEvent( ownedByEvent )
QskPopupEvent* QskPopupEvent::clone() const
{
return new QskPopupEvent( *this );
}
QskGestureEvent::~QskGestureEvent()
// -- QskGestureEvent
QskGestureEvent::QskGestureEvent( const QskGesture* gesture )
: QskEvent( QskEvent::Gesture )
, m_gesture( gesture )
{
if ( m_gestureOwnedByEvent )
delete m_gesture;
}
// -- QskAnimatorEvent
@ -151,6 +166,7 @@ QskAnimatorEvent::QskAnimatorEvent( QskAspect::Aspect aspect, State state )
{
}
QskAnimatorEvent::~QskAnimatorEvent()
QskAnimatorEvent* QskAnimatorEvent::clone() const
{
return new QskAnimatorEvent( *this );
}

View File

@ -10,6 +10,7 @@
#include <qcoreevent.h>
#include <qrect.h>
#include <memory>
class QskGesture;
class QskPopup;
@ -45,6 +46,11 @@ class QSK_EXPORT QskEvent : public QEvent
};
QskEvent( QskEvent::Type type );
#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
virtual QskEvent *clone() const;
#endif
};
class QSK_EXPORT QskGeometryChangeEvent : public QskEvent
@ -58,6 +64,8 @@ class QSK_EXPORT QskGeometryChangeEvent : public QskEvent
bool isResized() const;
bool isMoved() const;
QskGeometryChangeEvent* clone() const override;
private:
const QRectF m_rect;
const QRectF m_oldRect;
@ -71,6 +79,8 @@ class QSK_EXPORT QskWindowChangeEvent : public QskEvent
inline QQuickWindow* window() const { return m_window; }
inline QQuickWindow* oldWindow() const { return m_oldWindow; }
QskWindowChangeEvent* clone() const override;
private:
QQuickWindow* const m_oldWindow;
QQuickWindow* const m_window;
@ -83,6 +93,8 @@ class QSK_EXPORT QskPopupEvent : public QskEvent
inline QskPopup* popup() const { return m_popup; }
QskPopupEvent* clone() const override;
private:
QskPopup* const m_popup;
};
@ -90,15 +102,12 @@ class QSK_EXPORT QskPopupEvent : public QskEvent
class QSK_EXPORT QskGestureEvent : public QskEvent
{
public:
QskGestureEvent( const QskGesture* gesture, bool ownedByEvent = true );
~QskGestureEvent() override;
QskGestureEvent( const QskGesture* gesture );
inline const QskGesture* gesture() const { return m_gesture; }
inline bool isGestureOwnedByEvent() const { return m_gestureOwnedByEvent; }
private:
const QskGesture* m_gesture;
bool m_gestureOwnedByEvent;
};
class QSK_EXPORT QskAnimatorEvent : public QskEvent
@ -111,11 +120,12 @@ class QSK_EXPORT QskAnimatorEvent : public QskEvent
};
QskAnimatorEvent( QskAspect::Aspect aspect, State state );
~QskAnimatorEvent() override;
inline QskAspect::Aspect aspect() const { return m_aspect; }
inline State state() const { return m_state; }
QskAnimatorEvent* clone() const override;
private:
const QskAspect::Aspect m_aspect;
const State m_state;

View File

@ -58,17 +58,17 @@ static void qskSendPanGestureEvent(
QQuickItem* item, QskGesture::State state, qreal velocity, qreal angle,
const QPointF& origin, const QPointF& lastPosition, const QPointF& position )
{
QskPanGesture gesture;
gesture.setState( state );
auto gesture = new QskPanGesture();
gesture->setState( state );
gesture.setAngle( angle );
gesture.setVelocity( velocity );
gesture->setAngle( angle );
gesture->setVelocity( velocity );
gesture.setOrigin( origin );
gesture.setLastPosition( lastPosition );
gesture.setPosition( position );
gesture->setOrigin( origin );
gesture->setLastPosition( lastPosition );
gesture->setPosition( position );
QskGestureEvent event( &gesture, false );
QskGestureEvent event( gesture );
QCoreApplication::sendEvent( item, &event );
}