QskGestureRecognizer::targetItem introduced
This commit is contained in:
parent
b73513eb1f
commit
2e980f087d
@ -68,7 +68,8 @@ class QskGestureRecognizer::PrivateData
|
||||
return watchedItem->acceptedMouseButtons();
|
||||
}
|
||||
|
||||
QQuickItem* watchedItem = nullptr;
|
||||
QPointer< QQuickItem > watchedItem = nullptr;
|
||||
QPointer< QQuickItem > targetItem = nullptr;
|
||||
|
||||
QVector< QMouseEvent* > pendingEvents;
|
||||
|
||||
@ -121,6 +122,16 @@ QQuickItem* QskGestureRecognizer::watchedItem() const
|
||||
return m_data->watchedItem;
|
||||
}
|
||||
|
||||
void QskGestureRecognizer::setTargetItem( QQuickItem* item )
|
||||
{
|
||||
m_data->targetItem = item;
|
||||
}
|
||||
|
||||
QQuickItem* QskGestureRecognizer::targetItem() const
|
||||
{
|
||||
return m_data->targetItem;
|
||||
}
|
||||
|
||||
void QskGestureRecognizer::setAcceptedMouseButtons( Qt::MouseButtons buttons )
|
||||
{
|
||||
m_data->buttons = buttons;
|
||||
|
@ -43,11 +43,16 @@ class QSK_EXPORT QskGestureRecognizer : public QObject
|
||||
QskGestureRecognizer( QObject* parent = nullptr );
|
||||
~QskGestureRecognizer() override;
|
||||
|
||||
bool eventFilter( QObject* object, QEvent* event) override;
|
||||
bool eventFilter( QObject*, QEvent* ) override;
|
||||
|
||||
// the item where the gesture happens
|
||||
void setWatchedItem( QQuickItem* );
|
||||
QQuickItem* watchedItem() const;
|
||||
|
||||
// the item processing the gesture events
|
||||
void setTargetItem( QQuickItem* );
|
||||
QQuickItem* targetItem() const;
|
||||
|
||||
// Qt::NoButton means: all buttons accepted
|
||||
void setAcceptedMouseButtons( Qt::MouseButtons );
|
||||
Qt::MouseButtons acceptedMouseButtons() const;
|
||||
|
@ -61,9 +61,14 @@ static inline qreal qskAngle(
|
||||
}
|
||||
|
||||
static void qskSendPanGestureEvent(
|
||||
QQuickItem* item, QskGesture::State state, qreal velocity, qreal angle,
|
||||
const QPointF& origin, const QPointF& lastPosition, const QPointF& position )
|
||||
QskGestureRecognizer* recognizer, QskGesture::State state,
|
||||
qreal velocity, qreal angle, const QPointF& origin,
|
||||
const QPointF& lastPosition, const QPointF& position )
|
||||
{
|
||||
auto item = recognizer->targetItem();
|
||||
if ( item == nullptr )
|
||||
item = recognizer->watchedItem();
|
||||
|
||||
auto gesture = std::make_shared< QskPanGesture >();
|
||||
gesture->setState( state );
|
||||
|
||||
@ -244,12 +249,12 @@ void QskPanGestureRecognizer::processMove( const QPointF& pos, quint64 timestamp
|
||||
|
||||
if ( started )
|
||||
{
|
||||
qskSendPanGestureEvent( watchedItem(), QskGesture::Started,
|
||||
qskSendPanGestureEvent( this, QskGesture::Started,
|
||||
velocity, m_data->angle, m_data->origin, m_data->origin, m_data->pos );
|
||||
}
|
||||
else
|
||||
{
|
||||
qskSendPanGestureEvent( watchedItem(), QskGesture::Updated,
|
||||
qskSendPanGestureEvent( this, QskGesture::Updated,
|
||||
velocity, m_data->angle, m_data->origin, oldPos, m_data->pos );
|
||||
}
|
||||
}
|
||||
@ -262,7 +267,7 @@ void QskPanGestureRecognizer::processRelease( const QPointF&, quint64 timestamp
|
||||
const ulong elapsedTotal = timestamp - timestampStarted();
|
||||
const qreal velocity = m_data->velocityTracker.velocity( elapsedTotal );
|
||||
|
||||
qskSendPanGestureEvent( watchedItem(), QskGesture::Finished,
|
||||
qskSendPanGestureEvent( this, QskGesture::Finished,
|
||||
velocity, m_data->angle, m_data->origin, m_data->pos, m_data->pos );
|
||||
}
|
||||
}
|
||||
|
@ -23,11 +23,12 @@ class QSK_EXPORT QskPanGestureRecognizer : public QskGestureRecognizer
|
||||
void setOrientations( Qt::Orientations );
|
||||
Qt::Orientations orientations() const;
|
||||
|
||||
private:
|
||||
protected:
|
||||
void processPress( const QPointF&, quint64 timestamp, bool isFinal ) override;
|
||||
void processMove( const QPointF&, quint64 timestamp ) override;
|
||||
void processRelease( const QPointF&, quint64 timestamp ) override;
|
||||
|
||||
private:
|
||||
class PrivateData;
|
||||
std::unique_ptr< PrivateData > m_data;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user